Repeater分頁的邏輯設計可以分為以下幾個步驟:
以下是一個簡單的示例代碼,展示了如何使用Repeater控件實現分頁功能:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData(0);
}
}
private void BindData(int pageIndex)
{
// 獲取分頁參數
int pageSize = 10;
int totalRecords = GetTotalRecords(); // 從后端獲取總記錄數的方法
int offset = (pageIndex - 1) * pageSize;
int limit = offset + pageSize;
// 從后端獲取數據
List<Data> dataList = GetDataList(offset, limit); // 從后端獲取數據的方法
// 綁定數據到Repeater控件
rptData.DataSource = dataList;
rptData.DataBind();
// 更新頁面狀態
UpdatePageIndex(pageIndex);
}
private void rptData_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// 在這里處理每個數據項的顯示邏輯
}
}
private void btnPrev_Click(object sender, EventArgs e)
{
int currentPageIndex = Convert.ToInt32(Session["currentPageIndex"]);
if (currentPageIndex > 1)
{
BindData(currentPageIndex - 1);
Session["currentPageIndex"] = currentPageIndex - 1;
}
}
private void btnNext_Click(object sender, EventArgs e)
{
int currentPageIndex = Convert.ToInt32(Session["currentPageIndex"]);
int totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);
if (currentPageIndex < totalPages)
{
BindData(currentPageIndex + 1);
Session["currentPageIndex"] = currentPageIndex + 1;
}
}
在這個示例中,我們使用了Session來存儲當前頁碼,并在用戶點擊分頁按鈕時更新這個值。我們還定義了BindData
方法來獲取和綁定數據,以及rptData_ItemDataBound
方法來處理每個數據項的顯示邏輯。