ASP.NET中利用DataGrid实现高效分页(2)
这些属性设置好后再绑定数据:
productgrid.datasource = listproduct(1, productgrid.pagesize); // 在page_load里面 pageindex为1,记住判断ispostback,在ispostback为false时执行这些代码
productgrid.databind();
这样数据绑定后就可以看到具有分页模样的页面了.但是还不能真正的分页.要实现真正的分页,还必须实现下面的功能.
处理datagrid的pageindexchanged事件(处理用户新选中某页时的事件)
private void productgrid_pageindexchanged(object source, system.web.ui.webcontrols.datagridpagechangedeventargs e)
{
// 如果在存储过程分页功能中用1表示第一页的序号的话那么这里必须用e.newpageindex+1作为pageindex(如果选择了datagrid上页号为3的页,那么e.newpageindex就为2), 否则的话直接用e.newpageindex就可以了
productgrid.datasource = listproduct(e.newpageindex+1, productgrid.pagesize); // 从数据库中读取新的数据
productgrid.databind();
// 设置当前的page序号值, 如果不设置的话它是不会变得, 这样会给用户造成误解,以为所有页的数据相同。
productgrid.currentpageindex =e.newpageindex;
}
如果你处理了datagrid的itemcommand的事件的话,必须在itemcommand事件处理代码前面加上这些代码:
[iocblog.net 来源]
if (e.item.itemtype == listitemtype.pager)
{
return;
}
因为当pageindexchanged事件激发,也就是用户选则了另外一页时会先激发itemcommand事件,如果不这样处理的话,可能会遇到一些意想不到的情况(如果你确实需要的话也可以上面这段代码,不过最好实际测试一下)。
整个过程完成后,再次浏览页面,觉得速度真是快多了
[iocblog.net 来源]
Tag: DataGrid ,分页