金色坐标

关注互联网和IT科技的个人博客

« 彩虹QQ—外挂插件在技术上的被动性什么是统一认证中的联合认证 »

自定义数据分页机制—DataGrid控件AllowPaging属性设置

在开发Web应用程序的自定义数据分页功能时,笔者遇到了如下问题:按照分页存储过程提取了数据,数据总数,以及页数计算都是正确的,但是在利用DataGrid控件进行展示时,数据并不是按照分页存储过程提取的数据展示的。并且页面大小总是为10,即使cs代码进行了设置也不行。后来经过查找分析,发现是AllowPaging属性在作怪。该属性是如何影响笔者所定义的分页的呢,分析解决如下:


首先看一下msdn对于该属性的解释:

1,分页使您可以按页段显示 DataGrid 控件的内容。页上的项数由 PageSize 属性确定。如果没有为 PageSize 属性指定任何值,则 DataGrid 控件将在一页上显示 10 项。默认情况下,禁用分页。若要启用分页,请将此属性设置为 true 并提供用来处理 PageIndexChanged 事件的代码。


2,PageIndexChanged 事件的典型逻辑是首先将 CurrentPageIndex 属性设置为您要显示的页的索引,然后使用 DataBind 方法来将数据绑定到 DataGrid 控件。


3,使用标准分页,DataGrid 控件假设数据源包含所有要显示的项。DataGrid 控件基于由 CurrentPageIndex 属性指定的页索引以及由 PageSize 属性指定的一页上项的数目来计算显示的页上各项的索引。通常,每次 DataGrid 控件被分页时都将加载包含要显示的所有项的数据源。当数据源很大时这会占用大量资源。自定义分页使您可以只加载显示单页所需的数据段。有关自定义分页的其他信息,请参见 AllowCustomPaging 属性。


做web应用程序的,大家都知道,在做数据列表页面的时候,都会涉及到分页这个问题。从以上的解释可以看出来,.NET已经提供了比较完善的分页机制。但是在实际应用的时候,还是会遇到现实的问题。


第一,默认分页大小为10,而实际的需求也许需要展示20或更多。这个.NET也提供了解决方案,可以自己设置pagesize的大小,这个基本上可以解决大家的需求。


第二,.NET的分页机制,每次是提取了全部页数所需的数据,然后根据CurrentPageIndex提取当前的pagesize进行分页展示。这样就产生问题了。假如分页展示总数据量很庞大,那每次都提取如此庞大的数据量,时间,性能,效率上都会出现问题。


如何解决庞大数据量的分页显示呢?通常的办法是,开发人员采用自己的一套分页机制,自己定制pagesize,自己每次仅提取单个或数个页面大小的数据,而不是一次提取所有页面的数据,这样性能就会取得较大的提升。


那么笔者遇到的问题就是,DataGrid控件AllowPaging属性的设置,使得.NET的分页机制与自己定制的分页机制发生了冲突。当采取了自己定制的分页机制时,不能同时也采用.NET的分页机制,因此AllowPaging属性需要设置为false,才能保证所有的分页都是按照自己定制的分页来进行的。假如设置为true,那么就会出现笔者所遇到的问题,即数据分页不能完全按照自己的定制进行显示。




原创文章,如转载请注明:转载自金色坐标 [ http://www.kingxy.com/ ]

本文链接地址:http://www.kingxy.com/archives/35.html
  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过电子邮件订阅
  • 本站支持WAP访问

Search

Google

最新评论及回复

最近发表

金色坐标博客——京ICP备09009094号

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
KingXY Blog - This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.