zoukankan      html  css  js  c++  java
  • 使用Silverlight3中的DataPager实现服务器端分页

    代振军同学的blog中描述了使用DataPager实现客户端分页:
    http://www.cnblogs.com/daizhj/archive/2009/08/07/1529331.html
    一般说来,在项目中一般很少使用这种客户端的分页方式,除非数据量很少(干脆不分页算了)。
    把大量的数据一次性传输到客户端可不是个明智的做法,我们一般都是从客户端传入查找条件参数(包括过滤条件和分页条件参数),然后服务端从数据库中找出符合查找条件的的记录列表传输给客户端,客户端绑定到DataGrid控件上。
    这里使用“开启了Silverlight的WCF服务”来和客户端(silverlight)程序进行通信,数据访问采用Ado.net Entity Framework,解决方案结构如图:

    建立了一个测试用的数据库:包含两张表:

    该实例除了演示了使用DataPager的服务器端分页外还实现了使用Entity SQL的动态查找功能:

    分页控件很多人都写过,但不像DataPager那样要传入个PagedCollectionView才行,一般传入总记录数和分页大小就可以了,所以,我们给Datapager增加一个扩展方法来绑定总记录数和分页大小:

    Code

    WCF服务端的分页方法如下:

    Code

    上面的代码实现了使用Entity SQl的动态查找功能和分页功能,可以看到:只有当pageindex 等于0的时候才计算总记录数,提高了方法执行的效率;方法的输入参数和输出参数都进行了实体类的封装,建议在实际项目中也这样做,特别是在使用依赖注入的时候。
    在客户端(Silverlight项目)中引用好服务后,页面的cs代码如下:

    Code

    在PageIndex等于0的时候调用BindSource扩展方法来绑定总记录数和页大小;里面还有个关于Combobox的数据绑定方法。这样的分页方法不知大家有何评价,欢迎拍砖。

     2009-08-18 更新:修改了数据库的Departments表结构,实现了在Combobox里显示TreeView的效果(如效果图)。

  • 相关阅读:
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.rust语言特性 attilax 总结
    Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage  mvc mvp的 java c#.net php js
    Atitit.软件硕士  博士课程 一览表 attilax 总结
    Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.获取approot api 应用根路径 java c#.net php asp
    atitit.bsh BeanShell 的动态脚本使用java
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
    atitit.ntfs ext 文件系统新特性对比
  • 原文地址:https://www.cnblogs.com/xiaozhuang/p/1548129.html
Copyright © 2011-2022 走看看