关于应用程序中的分页

         这几天在工作过程遇到了WPF分页的情况,以前在Asp.net中分页做过,而且asp.net中自带了分页控件(自己觉得是一个伪分页),而WPF没有自带分页控件,在网上找了一下关于WinForm相关分页资料,并学习了。这几天脑袋一直在想一些问题,下面把一些想法记录下来。这些想法只是自己的一些想法,仅供参考。

一、为什么要分页,分页的好处

      个人觉得真正的分页实际上蕴含了两层意思。(1)数据的分屏显示(2)数据的分批获取。

     既然分页实际包含了分屏和分批获取数据,那我们先说说分屏的好处,分屏的好处不言而喻,每页显示适量的数据,让客户只关注当前屏的数据,不让客户有眼花缭乱的感觉。

     再说说数据的分批获取。这个可以说是提高用户体验的最本质的东西,每次服务器端获取适量的数据,而不是所有的数据。这样单次获取的数据会很快,立即呈现一批数据给用户,这样可以避免因为一次性获取大量的数据画大量的时间,而界面一直都是空的,让用户感觉一直没有获取到数据的感觉,以为操作失败的假象。

   从分屏显示和分批加载数据两个方面说了下分页为什么要分页,分页的好处也就很明显了。   

二、怎样分页

       我们知道了分页有两层意思,那么怎样分页就很好弄了。

       (一)分批获取数据

              存储过程:

            方法一:用于B/S,或C/S以“首页”,“上一页”,“下一页”,“尾页”,“共多少页”...的方式分屏加载显示数据。

                    传入参数:当前页,当前显示的条数(一般出入是固定的值),排序类型(升序还是降序),排序字段。

                     输出参数:总的记录条数

            方法二: 更多用于C/S分批获取数据加载到界面,并以呈现滚动条的方式分页显示数据。这个存储过程实际上对方法一的一种衍生。

                     传入参数:起始记录位置,当前页显示条数(一般是固定值),排序类型(升序还是降序了),排序

字段

                    输出参数:bool类型,是否还有数据。

            这些存储过程网上有,后续将在实战经验里写上这些存储过程运用。

        (二)分屏显示

               这个很简单,这里不说了

三、为什么C/S模式下微软不自带分页控件

      想想做asp.net的时候,asp.net中就自带了分页控件,我觉得叫分屏控件比较恰当,实际上把所有数据取到绑定到分页控件上,每页显示一个固定的页数,如果数据量大点还是会有窗口冻结假死的情况,所以说这是伪分页。虽然WinForm和WPF没有带分页控件,我们可以自己写的,几个按钮(首页,上一页,下一页,尾页等),几个Lable(共多少页,当前是第几页等),但是如果我们还是一回把数据取过来,加载到界面上,在绑定到分页控件上,也会出现界面冻结的情况。

     其实我们分页的目的是分屏(让页面固定显示适量的数据条数),而其实WinForm和WPF有滚动条,他实际上是分屏的另一种形式(每次显示的数据条数实际上是DataGrid等数据控件的可视区域),所以C/S程序不需要像Asp.net弄一个上一页,下一页等,我想这正是在C/S程序中没有用到分页控件的原因吧,当然你也可以有上一页,下一页,那么你的滚动条就没有多大作用。

     而分页真正的目的不是分屏,而是分批获取数据,不管是b/s还是c/s程序,我点击那个页或拖动滚动条就只取一个固定适量记录条数(这个数据比获取所有满足的条件的记录条数速度肯定是快些的),然后马上加载到界面,这样马上可以呈现到界面上,给用户良好的体验。

四、c/s程序数据加载的实现

   (一)分屏分批加载

         这种做法就是让当前界面中总是显示固定适量数据,自己添加分页按钮(上一页,下一页),滚动滑轮(滚动一次)分批取数据,分批加载到界面上。

         这个种做法每次操作都要和服务器交互。对于高频变化的数据服务数据这种方法比较适合,这个可以用上面怎样分页中的存储过程方法一实现

    (二)不分屏分批加载

         这里的”不分屏分屏加载“,实际上是分屏了的,而是以滚动条的形式分屏的。只是以固定这种做法将数据以新线程或异步的方式分批加载完成后,也是每加载一批数据立即显示到界面上,给用户的感觉数据不断的加载(从一开始就有数据,界面不会空白等待等),将所有的数据取到,缓存到本地的集合中,对缓存本地集合进行排序,过滤等操作。这个可以用上面怎样分页中的存储过程方法二实现

五、实战经验

       将使用,二中怎样分页的存储过程实现分页。这里使用WPF作为作为案例讲解。

(一)分屏分批加载

        

(二)不分屏分批加载

 

六、相关资源

http://www.cnblogs.com/wuhuacong/archive/2009/07/07/1518730.html
http://xuzhihong1987.blog.163.com/blog/static/267315872011315114240140/
http://wenku.baidu.com/view/99b824116c175f0e7cd13730.html

          

     

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值