Asp.net 通用萬級資料分頁代碼[修正下載地址]

來源:互聯網
上載者:User

1.主題,Asp.net環境下,通用的資料分頁(包括Oracle,SqlServer,DB2...)
很久以前,就想做一個通用點的資料分頁組件,但苦於一直沒有充足的時間,所以遲遲沒有實現(當然,主要是因為有一定的難度,要處理檢視狀態,回傳事件,自繪等...),"十一"期間,陪女朋友去了躺"湘西",白天遊山玩水,晚上無事,吃吃當地的夜宵,無聊之際,google了一把Oracle的資料分頁,竟然沒有一個完整的關於Asp.net + Oracle資料分頁的例子,要不就是有版本問題,索性決定自己弄一個.
2.環境
IDE;vs2008+asp.net2.0 or 3.0+Oracle9i
Oracle測試資料;41萬多條
頻寬;網通說是有2M的頻寬,其實TNND只有100多KB
3.原理
利用Oracle9i的RowNum擷取我們想要的資料,3.1 複製代碼 代碼如下:public IEnumerable GetPageSqlByOracle(string sql, int startRowIndex, int maximumRows, string orderBy)
{
string sqlFormat = string.Format("select * from (select rownum rn, pageTable.* from {0} pageTable where rownum <={1}) where rn>{2}", sql, startRowIndex + maximumRows, startRowIndex);

return ydjwOracleConn.RetriveDataSet(sqlFormat).Tables[0].DefaultView;
}

startRowIndex表示開始索引,maximumRows表示要擷取的每頁記錄數目.

然後把分頁後的資料繫結到ObjectDataSource組件,如

4.效果

4.1 支援多排序,比如時間,比如身份證明號碼等

4.2 41萬多條資料

4.3 單條件查詢,第一次用時1.547秒

4.4 第二次,用時1.515秒

第三次差不多,就不貼了.

4.5 看看不帶條件的查詢,一次把41萬條資料全部查詢出來使用的時間

可以看到,不帶條件查詢41萬條資料,第一次用時1.265秒.


4.6 可以看到不帶條件查詢41萬條資料,第二次用時1.156秒
4.7 可用SqlServer,或者Db2等資料庫代替,只需要修改 圖3.1擷取資料的方法,其他地方不用動.
5.需要注意的地方
5.1 記得資料量上萬時,一定要加索引,否則要等得"花謝花開".
5.2 ObjectDataSource的所有參數名稱,一定要和綁定的方法參數名稱,順序一致.
5.3 能用緩衝的,盡量用緩衝
5.4 SqlServer的分頁演算法,就不說了,替換一3.1的方法就行
5.5 因為資料庫檔案實在太大,不方便下載,有興趣的朋友自己弄一張表就OK,加上webconfig中的資料庫連接配置
6.下載
測試Demo下載 http://xiazai.jb51.net/200810/yuanma/TestDataBindControlls.rar 【已修正】
7.後話
該說的都說了,希望對大家能有所協助啟發,還有就是此測試Demo還沒有加緩衝,有興趣的朋友可以加上,歡迎大家討論,批評,指導...

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.