AspNetPager 是經典的 ASP.NET 分頁控件,它將分頁邏輯與 UI 完全分離,完美支援 SQL 級分頁(如 `LIMIT`、`ROW_NUMBER()`),彌補了 `GridView` 內建分頁效能差、邏輯耦合的不足。
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server"
PageSize="20"
OnPageChanging="AspNetPager1_PageChanging">
</webdiyer:AspNetPager>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
DisplayData(1, AspNetPager1.PageSize);
}
private void DisplayData(int pageIndex, int pageSize)
{
using (var md = new SQLiteData())
{
// 1. 獲取總記錄數
AspNetPager1.RecordCount = (int)(Int64)md.ExecuteScalar("SELECT COUNT(*) FROM city");
// 2. 分頁查詢(SQLite 使用 LIMIT offset, count)
string sql = string.Format("SELECT * FROM city LIMIT {0},{1}", (pageIndex - 1) * pageSize, pageSize);
DataTable dt = md.FillDataTable(sql);
// 3. 綁定數據
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
{
DisplayData(e.NewPageIndex, AspNetPager1.PageSize);
}
| 屬性/事件 | 說明 |
|---|---|
| PageSize | 每頁記錄數,默認 10 |
| RecordCount | 總記錄數,**必須在後台賦值** |
| CurrentPageIndex | 當前頁碼(只讀),首頁為 1 |
| PageChanging | 分頁切換事件,參數 `e.NewPageIndex` 為目標頁碼 |
| NumericButtonCount | 數字頁碼按鈕顯示個數 |
| AlwaysShow | 僅一頁時是否仍顯示控件 |
AspNetPager 核心在於「後台負責數據邏輯,前台負責 UI 渲染」。掌握 `RecordCount` 賦值時機與 `PageChanging` 事件處理,即可輕鬆實現高效分頁。