程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.Net可定制分頁用戶控件

Asp.Net可定制分頁用戶控件

編輯:關於ASP.NET

今天研究了以下Asp.Net 可定制分頁,用起來很爽,下面給大家介紹下。

借助 Asp.Net 提供的數據綁定控件,我們無需太多的代碼,甚至不需要代碼,只要在 VS2005 中拖拽幾下控件,進行一些屬性的設置,便可以實現在Asp時代需要做大量工作才能夠實現的分頁功能。但在實際的應用中,尤其是在Web站點程序中,我們經常需要更加豐富的用戶界面,而類似DataList或者 GridView 這樣的數據控件往往不能或者很難滿足我們的要求。此時,我們常常求助於 Repeater 控件,這樣我們依舊會面臨分頁及其顯示的問題。

本文不是講述如何進行數據庫分頁,而將注意力集中在如何實現可定制地 獲取頁碼、獲取路徑、顯示分頁鏈接,並且通過構建一個用戶控件來實現代碼重用上。如果你是一個初學者,你可以借鑒一下我的實現方式;如果你已經是一位高手,不妨提出設計的不足和改進意見。

本文是以接口的實現方式作為講述,這是因為我寫這篇文章的時候使用的是接口,但我後來又提供了一種更好的使用繼承的方式來實現,我提供了兩個版本的代碼下載,你可以相互對比著參考。

控件組成

為了能迅速提起大家的興趣,可以先點擊這個鏈接,看看實際的效果:

http://www.tracefact.net/Demo/Pager/Default.aspx

IUrlManager 接口

想一想如果你在設計一個可重用的分頁用戶控件,你面臨的問題是什麼?每個人獲取頁碼的方式都不同,例如,你的站點URL可能是類似這樣的 Default.aspx?page=1 ,而另外一個站點的URL 是這樣的 Default.aspx?p=1。更有一些可能根本不使用 QueryString 來獲取頁碼,它們的URL可能是這樣的 Default-1.aspx、Default-2.aspx 等等。獲取頁碼的方式不同,根據頁碼產生鏈接地址的方法自然也不相同。按照封裝變化的思想,我們應該將這變化的部分取出來,建一個 IUrlManager 接口:

public interface IUrlManager
{
  int CurrentPageIndex{ get; }    // 當前頁碼
  string GetPageUrl(int pageIndex);    // 根據 頁碼 獲取頁面路徑
}

而實際上,當前頁碼不應該大於總頁數,所以獲取當前頁CurrentPageIndex屬性需要能得知 總頁數,而總頁數通常是由 記錄數 和 分頁大小計算得出,這個接口實際上應該是這樣:

public interface IUrlManager
{
  int CurrentPageIndex{ get; }      // 當前頁碼
  string GetPageUrl(int pageIndex);      // 根據 頁碼 獲取頁面路徑
  int PageCount { get; }           // 總頁數
  
  int RecordCount { get; }        // 記錄總數
  int PageSize { get; }          // 分頁大小
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved