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

C# 通用分頁控件:複合控件架構與 DataBinding 解耦設計

     編輯:關於C語言

架構設計哲學

目標:建立不依賴特定資料顯示控件的通用分頁器,支援 GridView、Repeater、ListView 等任意 Control 衍生類別。

三種自訂控件模式比較

模式核心方法適用場景
User Control (.ascx)宣告式組合頁面片段重用
Composite ControlCreateChildControls()封裝多個子控件、需動態重繪
Custom ControlRender 覆寫完全自訂輸出、極致效能

本專案採用複合控件,利用 CreateChildControls() 實現分頁 UI 動態構建與重繪。

核心機制:DataBinding 事件訂閱

解耦原理

  1. 所有 Web 控件繼承自 Control,均擁有 DataBinding 事件
  2. 分頁器註冊為該事件的監聽器
  3. 資料綁定觸發時,分頁器攔截並計算分頁資訊
  4. 修改資料來源(如 PagedDataSource)實現分頁效果

// 概念性程式碼
protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    this.DataBinding += Pager_DataBinding;
}

void Pager_DataBinding(object sender, EventArgs e)
{
    // 1. 取得綁定的資料來源
    // 2. 計算總筆數、頁碼
    // 3. 建立 PagedDataSource 包裝原資料
    // 4. 重新指派給顯示控件
}

UML 序列圖

分頁控件 UML 序列圖

關鍵設計優勢

  • 零耦合:分頁器不知顯示控件具體型別
  • 通用性:支援所有 Control 衍生類
  • 外觀可定製:頁碼連結、導航按鈕佈局可配置
  • 狀態管理:ViewState 保持當前頁碼、頁大小

擴展建議

  • 加入 PageSize、PagerMode(Numeric/NextPrev/NextPrevAndNumeric)屬性
  • 支援 AJAX 部分更新(UpdatePanel 相容)
  • 提供樣式 CSS 類別屬性實現主題化
  • 實作 IPostBackEventHandler 處理頁碼點擊回發
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved