5

CS系统中分页控件的制作

 3 years ago
source link: http://www.cnblogs.com/thanks/p/14262068.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

需求:在一个已有的CS项目(ERP中),给所有的列表加上分页功能。

分页的几个概念:

  1. 总记录数  totalCount (只有知道了总记录数,才知道有多少页)
  2. 每页记录数  pageSize (根据总记录数和每页记录大小,可以计算出有多少页)
  3. 当前页 currentPage (当前页不能小于1,也不能大于总页数)
  4. 总页数 totalPage 

SQL Server的不同分页方法:

  • Top + 子查询,适用于SqlServer2000 及以前的版本中
  • row_number() over (order by ... asc/desc),从Sqlserver2005之后开始有
  • offset 20 rows fetch next 10 rows only, sqlserver2012及以后版本的数据库使用

不同数据库不同的分页方法,摘自 《给培训学校讲解ORM框架的课件》 一文:

qY3qqiY.png!mobile

因为系统是遗留的老系统,有上千个查询,所以要兼顾工作量和实施难易程度的问题,最终采用Sqlserver2012及以后使用的最新的分页功能。

原始查询:

fAfUfu6.png!mobile

改造后的查询:

jUf2qae.png!mobile

解释:因为分页需要计算总记录数,所以引入strSqlCount变量,计算总数。

好了,我们的分页控件登场。

iim2UzY.png!mobile

分页控件的代码(大家忍着点,使用的是vb.net的代码):

NNRFZnf.png!mobile

be2YJjQ.png!mobile

mimMNje.png!mobile

UvYb22U.png!mobile

最终的效果图如下:

eY36fmF.png!mobile

使用服务器端分页控件,页面加载速度有了大幅度的提高


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK