成峰

学以致用,实践中学习,学习后实践……
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataGrid分页新感想

Posted on 2008-11-29 11:33  成峰  阅读(919)  评论(1编辑  收藏  举报

今天上午在家闲着没事,看到有人在博客里写了一个比较好玩的DataGrid分页实现过程。基本思路大致了解后觉得还是有些意思的。下面:给大家讲一个我的损招,但是还是蛮好用的。

还是很给大家介绍一下思路吧:

DataGrid分页功能比较令人痛心的地方是:如果这DataGrid(后来叫GridView)个控件可以设置 DataCount,再可以设置CurrentPageDataSource,那该多好啊。即:告诉这个控件一共有多少条记录。然后再告诉它当前页面应该显示哪些记录。它能自动完成分页,哇,那应该多好啊!!一切只是幻想而已,GridView没有提供这样的功能。

那么我们就自己创造这样的功能吧。

获取一个数据源的时候,我们分两步走,第一步只获取一个Count:要显示的数据一共有多少条,第二步获取当前页面应该显示的数据。PageIndex:用DataGrid自带的PageIndex属性。PageSize也用DataGrid自带的属性。之后再根据平时我们用的获取数据的方法,获取到当前页面应该显示的数据。

获取到当前页面应该显示的数据之后,把其他不显示的页面的数据全部设置为Null。如下:

 

设置数据源

假设:当前是第三页,数据一共有5条(第一页页码是1,PageSize=2,当前页面是第二页

原先的最简单的分页情况便是直接拿到7条数据,然后交给DataGrid。再实现DataGrid的分页事件。

现在换一种思路:只拿第二页的数据,即:第3、4两条的数据。然后:把1、2、5条的数据设置为null,并构造一个新的数据源对象。即:

第二页数据:

List<DataSourceItem> source = GetDataSource(3,4);获取当前页面应该显示的数据。

source.Insert(0,null);source.Insert(0,null);执行两次,加入第一,第二两条数据。

source.Add(null);将第五条数据也加入进来。

这样就构造了一个5条数据的数据源。将这个数据源赋值给GridView,然后使用GridView原有的分页机制。在其分页事件中,每次分都重新设置一下数据源,万事OK。

 

以上只写了一点思路……,欢迎批评指证