需求:在一個已有的CS項目(ERP中),給所有的列表加上分頁功能。
分頁的幾個概念:
- 總記錄數 totalCount (只有知道了總記錄數,才知道有多少頁)
- 每頁記錄數 pageSize (根據總記錄數和每頁記錄大小,可以計算出有多少頁)
- 當前頁 currentPage (當前頁不能小於1,也不能大於總頁數)
- 總頁數 totalPage
SQL Server的不同分頁方法:
- Top + 子查詢,適用於SqlServer2000 及以前的版本中
- row_number() over (order by ... asc/desc),從Sqlserver2005之后開始有
- offset 20 rows fetch next 10 rows only, sqlserver2012及以后版本的數據庫使用
不同數據庫不同的分頁方法,摘自《給培訓學校講解ORM框架的課件》一文:

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

改造后的查詢:

解釋:因為分頁需要計算總記錄數,所以引入strSqlCount變量,計算總數。
好了,我們的分頁控件登場。

分頁控件的代碼(大家忍着點,使用的是vb.net的代碼):




最終的效果圖如下:

使用服務器端分頁控件,頁面加載速度有了大幅度的提高
.net工作札記系列:
[工作札記]02: .Net Winform控件TreeView最簡遞歸綁定方法
[工作札記]03: 微軟Winform窗體中設計上的Bug,會導致程序編譯失敗,影響范圍:到最新的.net4.7.2都有
