【開源】QuickPager ASP.NET2.0分頁控件V2.0.0.1——支持多種數據庫。讓分頁更加簡單。

 

分頁控件。支持多種數據庫,PostBakc和URL兩種分頁方式。 剛升級到.net2.0,還不是太完善。html



分頁控件的源代碼下載網址:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html
(在網頁的下面

下載文件裏面由一個測試網頁:http://localhost:5561/test/Testlist.aspx?fid=1
請注意後面的參數。
在webconfig裏面修改鏈接字符串和數據庫類型。DataType ---- 1: MS SQL ;2:Oledb;3:ODBC。
web

 

<appSettings>
    <add key="DataType" value ="1"/>
  appSettings>
    <connectionStrings>
        <add name="ConnStr" connectionString="Data Source=.;Initial Catalog=*** ;persist security info=False;user id=sa;pwd=;" providerName="System.Data.SqlClient"/>
    connectionStrings>算法


環境說明:

IDE:vs2008。數據庫

Framework:.net 2.0。服務器

數據源:各類數據庫。

形式:服務器控件,引用DLL便可。
app


功能說明:

分頁的方式顯示提取數據。包括UI的繪製、分頁算法(根據屬性組合成SQL語句)、提取數據、綁定控件、計算總記錄數(能夠自動保存,以提升效率)ide

兩種分頁方式 PostBack 和 URL。(暫時只支持Postback分頁。)函數


貼兩個圖先:




優勢:測試

一、支持多重數據庫.net

       這個要感謝 數據訪問函數庫(實際上是ADO.net2.0),還有就是 PageSQL 這個類。

二、使用簡單,能在控件內部實現的都實現了,外面只須要設置屬性就能夠實現分頁的功能,不須要處理翻頁時產生的事件。

最少只須要寫四行代碼就能夠搞定。

 myPage.ControlGridID = GV.ID;    //設置顯示數據的控件的ID值。
myPage.TableName = " TableName";    //表名或者字段名
myPage.TableOrderColumns = "OrderByColumns";    //排序字段
myPage.BindFirstPage();                         //顯示第一頁的數據

三、兩種分頁方式 PostBack 和 URL,能夠隨時切換。

四、不使用存儲過程,便於分頁算法的升級。還能夠靈活設置查詢條件。(不使用存儲過程也能夠達到很高的效率)

 
        分頁控件終於升級到了.net2.0,雖然功能上沒有增長,可是修改了大部分的內部代碼。原先的是基於 .net1.1 的,升級後基於 .net2.0。雖然如今 .net3.5都出來了,可是爲了可以更「兼容」一些,因此仍是採用了.net2.0。

        原來的代碼是寫在了一個.cs文件裏面,看起來比較混亂,層次不夠分明,在想擴展的時候就比較麻煩,如今按照「職責」分紅了幾塊,每一塊負責一個功能。

PageSQL 負責生成分頁用的 SQL語句,
PageGetData 負責到數據庫裏(經過數據訪問函數庫)提取數據,而後填充到集合(好比DataTable)裏面,
PageUI 負責UI的繪製。

這樣就分工明確,便於替換,好比如今的分頁控件默認的數據庫是 SQL Server2005,那麼目前提供的分頁算法是利用Row_Number()來實現的,而 SQL Server2000 裏沒有這個函數,那麼就要換一個分頁算法,這時就能夠繼承PageSQL類,實現一個針對SQL Server2000的分頁算法(難道是傳說中的多態)。這樣就能夠很方便的更換數據庫和分頁算法(同一種數據庫,多種分頁算法)(難道是傳說中的對修改關閉?)。

 
使用方法和經常使用的屬性說明

public partial class TestList : BaseClass.BasePageList 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            myPage.ControlGridID = GV.ID;       //設置顯示數據的控件的ID值。

            if (!Page.IsPostBack)
            {
                //屬性會保存在ViewState裏面,因此在第一次訪問的時候賦值就能夠了。
                SetPageInfo();
            }
        }

        private void SetPageInfo()
        {
            myPage.TableName = " TableName";                //表名或者字段名
            //myPage.TableShowColumns = "*";                //顯示的字段
            //myPage.TableIDColumns = "MasteID";            //主鍵
            myPage.TableOrderColumns = "OrderByColumns";    //排序字段
            myPage.PageSize = 10;                           //一頁的記錄數
            myPage.NaviCount = 5;                           //頁號導航的數量
            myPage.TableQuery = "";                         //查詢條件

            myPage.BindFirstPage();                         //顯示第一頁的數據
        }
    }


缺點:

因爲時間倉儲,有些功能還不完善。提供源代碼,感興趣的話,歡迎一塊兒討論:)

 直接看源碼:

http://www.cnblogs.com/jyk/archive/2008/06/25/1229967.html http://www.cnblogs.com/jyk/archive/2008/06/25/1229973.html 目前使用的分頁算法 set nocount on;            with t_pager as (               select *,rn = ROW_NUMBER() OVER (ORDER BY id desc) FROM test_indexorder             )            SELECT id,name,content,co1,co2,co3,co4,co5 from t_rn WHERE rn between 19007 and 19057; 

相關文章
相關標籤/搜索