成峰

学以致用,实践中学习,学习后实践……
随笔 - 5, 文章 - 1, 评论 - 16, 阅读 - 35720
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

DataGrid分页新感想

Posted on   成峰  阅读(921)  评论(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。

 

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

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示