Wuqi.Webdiyer.AspNetPager 是經典免費分頁控件,支援 `GridView`、`Repeater`、`DataList` 等資料控件,提供豐富樣式與事件。本文示範搭配 `Repeater` + `SqlDataAdapter` 分頁填充。
<webdiyer:AspNetPager ID="AspNetPager1" runat="server"
PageSize="15"
AlwaysShow="True"
FirstPageText="首頁" PrevPageText="上一頁"
NextPageText="下一頁" LastPageText="尾頁"
OnPageChanged="AspNetPager1_PageChanged"
CssClass="pagination" />
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table><tr><th>標題</th><th>時間</th></tr></table></HeaderTemplate>
<ItemTemplate><tr><td><%# Eval("Title") %></td><td><%# Eval("CreateTime") %></td></tr></ItemTemplate>
</asp:Repeater>
private void BindData() {
string connStr = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
using (var conn = new SqlConnection(connStr)) {
var cmd = new SqlCommand("SELECT * FROM Articles ORDER BY CreateTime DESC", conn);
var da = new SqlDataAdapter(cmd);
var ds = new DataSet();
// 關鍵:設定總筆數,控件自動計算總頁數
AspNetPager1.RecordCount = GetTotalCount(); // 獨立查詢 COUNT(*)
// Fill 當頁資料:startIndex = (CurrentPageIndex-1)*PageSize
da.Fill(ds, (AspNetPager1.CurrentPageIndex - 1) * AspNetPager1.PageSize,
AspNetPager1.PageSize, "Articles");
Repeater1.DataSource = ds.Tables["Articles"];
Repeater1.DataBind();
}
}
private int GetTotalCount() {
// 執行 SELECT COUNT(*) FROM Articles 回傳 int
}
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) BindData();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e) {
BindData(); // 換頁時重新綁定
}
| 屬性 | 說明 |
|---|---|
| PageSize | 每頁筆數 |
| RecordCount | 總筆數 (必須設定,否則不顯示) |
| CurrentPageIndex | 當前頁碼 (1-based,用戶點擊自動更新) |
| AlwaysShow | 單頁時是否仍顯示控件 |
| NumericButtonCount | 數字按鈕顯示個數 |
| PagerStyle.Mode | `Numeric`/`NextPrev`/`NextPrevWithFirstLast`/`NumericFirstLast` |
| CustomInfoHTML | 自訂統計資訊,如「共 {0} 頁 / {1} 筆」 |
實作 `SelectMethod` 回傳 `IEnumerable`、`SelectCountMethod` 回傳 `int`,控件自動處理分頁邏輯,程式碼更乾淨。