100 分!! 在vs2005 下应用 webdiyer 的分页控件,不用存储过程,只是 sql 语句方法,为什么分页后数据不连续,请看...
用的是webdiyer.com 网站上下载的最新的 vs.net2005下的分页控件。
我用的是普通的 sql 语句方法:
if (!IsPostBack)
{
string sqlcount = "select count(ID) from NewsTable ";
//略
int totalOrders = (int)mycomm.ExecuteScalar();
AspNetPager1.RecordCount = totalOrders;
//以上取得分页的数据总数是没问题的,是正确的
BindData();
}
public void BindData()
{
string sql = "select * from NewsTable ";
//略去声明myAdapter 和 DataSet
//以下是填充数据方法
myAdapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.StartRecordIndex - 1), AspNetPager1.PageSize, "dtable ");
this.Repeater1.DataSource = ds.Tables[0].DefaultView;
this.Repeater1.DataBind();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
BindData();
}
以上方法分页后,页面上的数据两页之间不连续,后面的许多页没有数据,我怀疑是不是这个地方出错了
myAdapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.StartRecordIndex - 1), AspNetPager1.PageSize, "dtable ");
------解决方案--------------------计算起始位置错误,应该是=每页数量*(当前页数-1)。当前页以1开始
myAdapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.当前页- 1), AspNetPager1.PageSize, "dtable ");
------解决方案--------------------myAdapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.StartRecordIndex - 1), AspNetPager1.PageSize, "dtable ");
AspNetPager1.StartRecordIndex 改为AspNetPager1.CurrentPageIndex
------解决方案--------------------上边的greenery(greenery)和rony2006() 说的是正确的,myAdapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.StartRecordIndex - 1), AspNetPager1.PageSize, "dtable ");
这个方法的第二个参数值表示是从第几条记录开始填充数据,在AspNetPager 6.0中新增了一个属性StartRecordIndex就是当前页起始记录的索引,不过这个值是从1开始的,而上面的Fill方法的第二个参数的值是从0开始的,所以要用StartRecordIndex属性的话,上面的代码正确写应该是:
myAdapter.Fill(ds, AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize, "dtable ");
或者:
myAdapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "dtable ");
我没有说过6.0版中把什么属性改成StartRecordIndex了啊,这个属性的新增的,看源代码就可以看到,它只有一个get访问器:
public int StartRecordIndex
{
get
{
return (CurrentPageIndex - 1) * PageSize + 1;
}
}
它的值就是(CurrentPageIndex - 1) * PageSize + 1,就是当前页的起始记录编号,如果用楼主的方法,AspNetPager1.PageSize * (AspNetPager1.StartRecordIndex - 1) 这样计算出来的值我也不知道是什么值了:)