WPF分页功能实现

提到分页显示数据,首先想到的就是row_number分页,以及传统的TOP分页。这两种函数它们结合order by..asc(升序)/desc(降序)实现查询到的数据分页升/降的显示。它们结合使用可以有很多种查询数据分页显示的写法方案,在前面的存储过程的总结中就有举过案例,这些方案不同点在于平均查询次数所需要的时间的不同,当然是时间越短效率越高。之所以会又提到分页查询这一功能,是在近期WPF学习过程中,案例项目中分页数据显示功能是较为重要的知识点之一,代码比一般的增删查改相比会较为复杂一些。因此结合案例项目,将WPF中对SQL分页查询的使用以及应用程序代码的编译过程到最后功能的实现进行详细的总结归纳。

在数据库中为分页创建封装一个单独公共的存储过程PublicPagingSelect,将所需要的方法判断查询数据的语句都写在这个存储过程中。除开需要声明的一些常用变量,比如表名,返回列,排序类型,页码,尺寸,返回总数,查询条件等。还要定义赋值必需的四个变量以及类型(图中红色框中内容)。变量声明完毕,下面就是判断部分,这里判断返回记录总数@doCount是否为0,不为零就返回所有数据的总共条数。判断完条数,还有排序,页码设置的操作。排序类型也分为0和非0的情况,在排序类型参数@OrderType不为0的情况下,就要执行降序排序。页码的判断就和前面两个参数不一样了,因为我们的首页没有0页这一说,都是第一页开始,所以它的判断都是看@PageIndex该参数是否为1。

WPF分页功能实现_第1张图片WPF分页功能实现_第2张图片

做好了前面的参数变量定义,以及条数,页码,排序类型的判断工作,要在存储过程中真正实现SQL赋值的语句代码,还需要下面这段重要的拼接代码。

WPF分页功能实现_第3张图片

数据库存储过程语句编译完成以后,就到编译”中介”服务端这一步,创建DAL层,BLL层和一个WCF服务。DAL层是服务器起”中介”作用的重要部分,差不多类似MVC中在创建Model引用数据库.然后引用封装好的插入更新删除方法,以及对数据表数据集二进制文件的查询方法封装引用(这里之所以会说是对方法的引用,是因为这是上课的例子,老师授课前已经写好方法,时间关系才进行的复制引用,所以,我们是需要记住如何去写DAL层的连接数据库方法的)

WPF分页功能实现_第4张图片WPF分页功能实现_第5张图片

写好DAL层要在服务端BLL层引用DAL,然后实例化数据层,封装方法将数据库的参数传递到服务端上,实例化对象数组:即(序列化参数)来盛装数据库传递参数和它自身的参数类型。再通过客户端声明一一对应定义的参数与数据库的参数进行匹配赋值。配置WCF前也需要引用BLL层再到Web.config进行配置。

WPF分页功能实现_第6张图片WPF分页功能实现_第7张图片

上述了一些很多与本篇主题关系不大的服务器代码与配置。之所以补充这一部分,是先前的WPF文件处理那篇文献总结中,只是寥寥草草提到了几句服务端的大概代码作用,并没有细化,所以这里索性将服务器具体化介绍一下它的组成部分和结构作用。言归正传上图中配置WCF服务已新建好分页的BLL服务配置。指出的另外一个线路原因在于分页操作就是运用在案例项目中的线路管理的站点查询数据显示那部分。当然了站点管理模块数据也需要新建一个自己的SQL语句存储过程并传参到服务器,所需操作同分页配置流程成功即可。接下来就是客户端的后台页面代码的编译,也就是定义与数据库参数在服务器对应赋值的参数的客户端后台。还有一点就是但凡在服务器WCF配置过的或是更新了存储过程数据操作方法。对应的客户端解决方案已有的服务引用就需更新,没有的就添加新的服务引用。

WPF分页功能实现_第8张图片

站点管理页面如图所示。接下来是后台编译方法代码部分。分页操作包括首页尾页下一页上一页以及一个定义选择每页行数的下拉框组合而成。首页尾页下一页上一页虽然都是图片显示,但在设计器中都给了对应的鼠标操作改变事件,定义好事件转到后台定义即可编译实现功能的代码方法。与MVC不同的是,后台代码中在声明变量时,因为大多数都不止一个方法在用到,所以我们需要在最开始就进行全局变量的声明。

WPF分页功能实现_第9张图片

一般在点击一个页面的时候就有一个页面的加载事件,这里需要在页面加载事件中对分页部分用到的控件变量进行初始化。页面加载事件除了初始化展示页面样式,还有该页面的数据同样需要显示出来,调用写好的GetTable()查询数据方法,GetTable()方法中调用需要的数据源到接收数据的表格中去。private void GetTable() {dtStationManage = myClient.UserControl_Loaded_SelectStationManage().Tables[0]; //接收表格 dgStationManage.ItemsSource = dtStationManage.DefaultView; //绑定数据源 }对鼠标的改变事件我们有首页尾页下一页上一页,下一页上一页改变的就是变量intPageIndex的值,上一页索引-1,下一页索引+1.

WPF分页功能实现_第10张图片WPF分页功能实现_第11张图片

在主页面可以看到,有文本框自己输入页码数字,所以就会存在定义文本框改变事件,这里输入想要的页码时,就要规定除数字外其它中文汉字等就不能输入。定义完限制条件后,将变量页数不为0作为条件:1,判断输入数字>大于总的页数;2,当前输入的数字不等于现在的页码数,并且排除输入页码小于1的情况。

下拉框改变事件,主要是为了显示需要显示出来的数据条数。下拉框改变事件方法最后还调用了一个查询按钮点击事件,这里因为项目站点管理中查询数据可以通过站点名称和省份进行条件查询,所以将分页查询与模糊查询数据方法写在一起。

WPF分页功能实现_第12张图片WPF分页功能实现_第13张图片

点击事件中调用查询方法ChaXunShuJu(),分页操作代码部分结束。效果图如下

WPF分页功能实现_第14张图片WPF分页功能实现_第15张图片

 

你可能感兴趣的:(WPF)