首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

程式設計「方便麵」:使用者控制項封裝分頁邏輯實戰分享

     編輯:關於ASP.NET

作者將常見的「分頁功能」封裝為使用者控制項(.ascx),實現真正的資料庫分頁(而非 GridView 偽分頁),大幅降低大資料量下的效能壓力。

控制項架構

  • 介面:記錄總筆數、目前頁碼、首頁/上頁/下頁/末頁、跳轉輸入框(文中附截圖)。
  • 狀態保存:頁面置放兩個 HiddenField(hdfcurr 目前頁、hdfcount 總筆數)維持跨回傳狀態。
  • 宿主頁面交互:定義委派 DelegateDataBind(DataTable dt),控制項觸發事件,宿主頁面實作資料查詢並繫結 GridView。

核心程式碼

// 控制項內
public delegate void DelegateDataBind(DataTable dt);
private DelegateDataBind _dataBindEvent;
public DelegateDataBind dataBindEvent { get => _dataBindEvent; set => _dataBindEvent = value; }

// 使用者點擊「下一頁」按鈕時
protected void btnNext_Click(object sender, EventArgs e)
{
    int nextPage = (int)hdfcurr.Value + 1;
    hdfcurr.Value = nextPage.ToString();
    dataBindEvent?.Invoke(GetPageData(nextPage)); // 呼叫宿主實作的查詢邏輯
}

三大實作挑戰與對策

  1. 分頁控制類封裝:封裝儲存程序參數(頁碼、頁大小、資料表名、排序欄位、篩選條件)。
  2. 控制項與宿主頁面資料交互:委派模式解耦,控制項不需知道具體查詢 SQL。
  3. 分頁儲存程序:使用 ROW_NUMBER() OVER (ORDER BY ...) 實作高效分頁(SQL Server 2005+)。

作者分享「適度食用使用者控制項」心得:節省重複程式碼、實現功能鬆耦合、提升專案可維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved