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
[復制此代碼]CODE:
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.效果