本文提出一套端到端分頁解決方案,涵蓋資料呈現 (GridView)、分頁導航 (QuickPager)、SQL 產生 (Pager_SQL)、資料存取 (DAL)、資料庫五大模組,強調模組化、可替換、按需取數、支援海量資料。
| 模組 | 預設實作 | 可替換選項 | 介面/基底 |
| 資料呈現 | GridView | DetailsView, FormView, Repeater, DataGrid, DataList, CheckBoxList... | BaseDataBoundControl |
| 分頁導航 | QuickPager | 吳旗娃分頁, EasyTools, 自訂控件 | IPager (自訂) |
| 分頁演算法 | Pager_SQL (QuickPager_SQL) | 無同類產品,儲存程序略似 | IPagerSQLStrategy |
| 資料存取 | DataAccessLibrary (自訂) | SQLHelper, Enterprise Library, Dapper, EF Core | IDALforPager (自訂) |
| 資料庫 | SQL Server 2000/2005 | Access, Excel, Oracle, MySQL (理論支援) | ADO.NET Provider |
模組間關係:組合而非繼承
// QuickPager 組合 Pager_SQL
public class QuickPager : WebControl
{
public QuickPagerSQL PagerSQL { get; set; } // 核心分頁邏輯
public IDALforPager DataAccess { get; set; } // 資料存取介面
public void DataBind()
{
PagerSQL.CreateSQL();
string countSql = PagerSQL.GetRecordCountSQL;
int total = DataAccess.ExecuteScalar(countSql);
PagerSQL.PageCount = total;
PagerSQL.ComputePageCount();
string pageSql = PagerSQL.GetSQLByPageIndex(CurrentPageIndex);
DataTable dt = DataAccess.ExecuteDataTable(pageSql);
BoundControl.DataSource = dt;
BoundControl.DataBind();
}
}
完整使用流程
- 設定
PagerSQL 屬性 (TableName, Columns, OrderBy, Query, PageSize, Kind)。
- 設定
DataAccess 連線字串與實作。
- 設定
BoundControl (GridView 等) 樣版與欄位。
- 呼叫
QuickPager.DataBind() 一鍵完成:統計 → 計算頁數 → 查詢頁面資料 → 綁定控件 → 渲染分頁導航。
- 分頁導航事件自動觸發
PageIndexChanged → 重新 DataBind()。
- 新增/修改/刪除後呼叫
QuickPager.DataBind() 同步更新。
查詢功能整合
// 使用者輸入查詢條件 → 組合 WHERE 字串
PagerSQL.TableQuery = BuildWhereClause(txtKeyword.Text, ddlCategory.SelectedValue);
// 重新綁定
QuickPager.CurrentPageIndex = 1; // 重置首頁
QuickPager.DataBind();
總結
此方案將分頁核心邏輯 (SQL 產生) 獨立為 Pager_SQL,分頁 UI 為 QuickPager,資料存取抽象為 IDALforPager,達成高內聚、低耦合、高可測試性、高可替換性的企業級分頁架構。
- 上一篇文章: 分頁解決方案之分頁演算法——Pager_SQL 的思路與使用方法
- 下一篇文章: 存儲過程實現無限級分類(三)
Copyright ©
程式碼之家 All Rights Reserved