專案中常將分頁邏輯封裝為 Web 使用者控制項(.ascx),以便在多個頁面重複使用。本文示範如何在內容頁面(Content Page)中,於 Page_Load 事件中動態設定該控制項的屬性,完成資料繫結。
假設控制項 ID 為 Paging1,對外公開以下屬性:
DataControl:要繫結資料的控制項(如 GridView)TableName:資料表名稱Sort:排序方式(asc/desc)Column:排序欄位/主鍵欄位protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 取得控制項實例
Paging p = Paging1;
// 設定繫結目標控制項
p.DataControl = gvBookType; // 頁面上的 GridView ID
// 設定資料來源相關屬性
p.TableName = "BookShop_BookType";
p.Sort = "asc";
p.Column = "BookType_ID";
// 若控制項內部有自動繫結邏輯,這裡可能不需額外呼叫
// 否則可能需呼叫 p.BindData() 等方法
}
}
.ascx 控制項中實作 BindData() 方法,內部根據屬性產生 SQL、查詢資料、設定 DataControl.DataSource 並 DataBind()。PageIndexChanging),並在換頁時重新查詢對應頁碼資料。PageSize、CurrentPageIndex 等屬性,提高彈性。若專案採用資料存取層(DAL)或 ORM,控制項內部不應直接撰寫 SQL 字串,而應呼叫服務層方法,傳入分頁參數取得 PagedList<T> 等標準化結果,降低耦合並防止 SQL 注入。