读书人

100 分! 在vs2005 下应用 webdiyer 的

发布时间: 2012-01-28 22:06:13 作者: rapoo

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) 这样计算出来的值我也不知道是什么值了:)

读书人网 >asp.net

热点推荐