CS系統中分頁控制元件的製作

thanks發表於2021-01-11

需求:在一個已有的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框架的課件》一文:

CS系統中分頁控制元件的製作

 

因為系統是遺留的老系統,有上千個查詢,所以要兼顧工作量和實施難易程度的問題,最終採用Sqlserver2012及以後使用的最新的分頁功能。

原始查詢:

改造後的查詢:

解釋:因為分頁需要計算總記錄數,所以引入strSqlCount變數,計算總數。

好了,我們的分頁控制元件登場。

分頁控制元件的程式碼(大家忍著點,使用的是vb.net的程式碼):

最終的效果圖如下:

使用伺服器端分頁控制元件,頁面載入速度有了大幅度的提高

 

相關文章