ASP.NET大数据量分页技术的初步体验技巧

可以借助于GridView与AspNetPager(强大的开源分页控件)实现ASP.NET获取数据表格时的分页。

GridView分页功能较弱,分页切换速度不如AspNetPager。

两者可单独使用,也可结合起来使用,即使用GridView进行数据的显示,AspNetPager进行页码的切换操作。


GridView分页时需要注意的地方:

1. 当使用它点击其他页时,GridView将重新分配Rows.Count的值为当前页得记录数,而不是DataSource里的总记录数。

2. 分页时需要重新执行数据绑定。

为便于确认各行数据所在的行,指定GridView各行记录的索引键值。

如:

this.GridView1.DataSource = CustmTable;
this.GridView1.DataKeyNames = new string[] { "ID" };//主键 
this.GridView1.DataBind();


GridView分页显示后出现索引超出范围错误解决办法,即出现上述第1个需要注意的情况:

// GridView分页显示后出现索引超出范围错误解决办法
int iPageIndex = GridView1.PageIndex;   //获取当前页索引
int iPageSize = GridView1.PageSize;      //获取每页显示记录数
int iIndex = Convert.ToInt16(GridView1.Rows[i].DataItemIndex) - iPageIndex * iPageSize;  //计算
int id = Convert.ToInt32(GridView1.DataKeys[iIndex].Value);


GridView分页时数据重新绑定,即第2个需要注意的情况的解决:可以在首次指定数据集进行数据绑定时把数据集以静态成员变量的形式(static)保存起来。


由数据表的数据键值反求数据GridView中显示的第几行:

int iPageIndex = GridView1.PageIndex;   //获取当前页索引
int iPageSize = GridView1.PageSize;      //获取每页显示记录数
int iIndex = 0;
for (int i = 0; i < this.GridView1.DataKeys.Count; i++)
{
    if(searchKey = Convert.ToInt32(this.GridView1.DataKeys[i].Value))
        iIndex = i;
}


从DataTable.Rows中删除行,不应该使用DataTable.Rows.RemoveAt(i)或者DataTable.Rows[i].Delete(), 两者都会减少DataTable.Rows.Count的数值大小,容易产生bug。比较好的方式是倒序删除行。

DataTable dt;
// ...
for(int i = dt.Rows.Count - 1; i >= 0; i--)
{
    dt.Rows.RemoveAt(i);
}



参考自:

GridView分页后RowCommand出错:索引超出范围 http://www.cnblogs.com/X-Jonney/archive/2009/05/20/1467804.html

使用AspNetPager与GridView完成分页 http://www.cnblogs.com/studyzy/archive/2008/07/30/1256877.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值