Asp.Net可定製分頁使用者控制項

來源:互聯網
上載者:User

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

藉助 Asp.Net 提供的資料繫結控制項,我們無需太多的代碼,甚至不需要代碼,只要在 VS2005 中拖拽幾下控制項,進行一些屬性的設定,便可以實現在Asp時代需要做大量工作才能夠實現的分頁功能。但在實際的應用中,尤其是在Web網站程式中,我們經常需要更加豐富的使用者介面,而類似DataList或者 GridView 這樣的資料控制項往往不能或者很難滿足我們的要求。此時,我們常常求助於 重複器控制項,這樣我們依舊會面臨分頁及其顯示的問題。

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

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

控制群組成

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

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; }          // 分頁大小}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.