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

C# 實現 Google 風格分頁控件

     編輯:關於C語言

專案背景

專案使用 DataList 控件,需要自定義分頁功能。參考 Google 經典分頁風格,在網上資料基礎上修改優化,實現一個純字符串輸出的分頁生成器,可直接配合 Label 或 LiteralControl 使用。

核心功能

  • 不涉及數據層分頁讀取,專注於 UI 樣式生成
  • 輸出帶 HTML 的分頁字符串,靈活嵌入頁面
  • 支援首頁、上一頁、頁碼區間、下一頁、末頁完整導航
  • 當前頁高亮顯示(紅色字體)
  • 智能頁碼區間計算:當前頁為中心,前後各 5 頁,邊界自動修正

核心代碼

/// 
/// 類似 Google 的分頁函數
/// 
/// 總記錄數
/// 每頁記錄數
/// 當前頁數
/// URL 參數
private string Pagination(int total, int per, int page, string query_string)
{
    int allpage = 0, next = 0, pre = 0, startcount = 0, endcount = 0;
    string pagestr = "";

    // 邊界修正
    if (page < 1) page = 1;

    // 計算總頁數
    if (per != 0)
    {
        allpage = total / per;
        allpage = (total % per != 0) ? allpage + 1 : allpage;
        allpage = (allpage == 0) ? 1 : allpage;
    }

    next = page + 1;
    pre = page - 1;
    
    // 中間頁起始序號:當前頁為中心,前後各 5 頁
    startcount = (page + 5) > allpage ? allpage - 9 : page - 4;
    // 中間頁終止序號
    endcount = page < 5 ? 10 : page + 5;
    
    if (startcount < 1) startcount = 1;
    if (allpage < endcount) endcount = allpage;

    pagestr = $"共 {allpage} 頁      ";

    // 首頁、上一頁
    pagestr += page > 1 
        ? $"首頁  上一頁" 
        : "首頁 上一頁";

    // 中間頁碼區間
    for (int i = startcount; i <= endcount; i++)
    {
        pagestr += page == i 
            ? $"  {i}" 
            : $"  {i}";
    }

    // 下一頁、末頁
    pagestr += page != allpage 
        ? $"  下一頁  末頁" 
        : " 下一頁 末頁";

    return pagestr;
}

使用方式

// 頁面載入時調用
string pageHtml = Pagination(totalRecords, pageSize, currentPage, "List.aspx");
lblPagination.Text = pageHtml;
// 或
this.Controls.Add(new LiteralControl(pageHtml));

設計亮點

  • 零依賴:純算法實現,無第三方庫依賴
  • 高性能:字符串拼接,無控件樹開銷
  • 邊界健壯:多重條件修正,極端數據下不拋異常
  • 樣式可控:輸出純 HTML,CSS 完全可定制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved