程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET 2.0在SQL Server 2005上自定義分頁

ASP.NET 2.0在SQL Server 2005上自定義分頁

編輯:關於ASP.NET

出處:http://aspnet.4guysfromrolla.com/demos/printPage.aspx?path=/articles/031506-1.aspx

介紹

web開發中普遍會用頁面來顯示數據。比起整頁顯示一張報表或者一張數據表的數據給用戶,開發者經常用到的是分頁顯示,每頁只顯示部分數據,用翻頁來控制。在ASPV.NET 1.X裡,DataGrid控件使翻頁顯示變得簡單—只需要把屬性AllowPaging設置為”true”,並在PageIndexChanged事件中加少量幾行的代碼就可以實現!ASP.NET 2.0中的控件GridView使事件也簡單化了,只需要在GridView的智能面板裡把“允許分頁”選中,不需要一行代碼就可以實現。

當然了,生活中沒有任何事是容易就能做好的。你需要權衡選中一個復選框就能實現的分頁方案(或者用DataGrid,寫幾行代碼的實現方案)的性能。如果不選中分頁,DataGrid和GridView使用默認分頁,簡單的把所有數據從頭到尾地顯示在一張網頁上。當數據量小時,幾十一百或類似的數量時,效率性能不會太明顯。但是,如果你想像這樣用默認的分頁方法顯示上千萬、以至幾十萬的書時就不可行了。

取代默認分頁的方法就是自定義分頁,你要做的工作就是用代碼來判斷並把正確的分頁數據取出,可能會費點事,但對於應付如此龐大的數據量來說,絕對值得。我在《ASP.NET Web數據控件快速開發》中討論了如何在ASP.NET 1.X中實現自定義分頁,這篇文章,我們來看在ASP.NET 2.0中如何利用SQL Server 2005的新特性 ROW_NUMBER()來實現自定義分頁。(更多關於SQL SERVER的新特性說明,請看利用Microsoft SQL SERVER 2005返回列值。)

繼續讀下去來學習更多吧!

默認分頁與自定義分頁對比

在ASP.NET 2.0裡GridView(或ASP.NET 1.X裡的DataGrid)提供兩種分頁模型:默認分頁與自定義分頁。這兩種模型在性能與易用性上提供了折中的方案。SqlDataSource控件使用默認分頁(盡管你可以在自定義分頁了使用它);ObjectDataSource默認使用默認分頁模型,不過有個簡單的配置可以讓它使用自定義分頁。心裡要時刻記得GridView僅僅是顯示數據;它才是GridView負責從數據庫中檢索數據的數據源控件。

使用默認分頁,每次打開新頁顯並顯示時,都要從GridView的數據源控件中獲得所有數據。一旦全部的數據返回,GridView就把所有的數據全顯示在頁面上,於是用戶看到一張頁面上顯示了如此多的數據。關鍵要理解這裡,無論何時當用戶訪問第一頁或翻到其他頁時,所有的數據都會被重新加載一遍。

舉個例子,比如說你在一家電子商務公司上班,你想讓用戶分頁查看你們公司所銷售的150中產品。並且,你想每頁只顯示10條數據。現在,當一個用戶訪問網頁時,所有150條數據都被數據源空間返回過來。但GridView只顯示第一個10條數據(產品1到產品10)。再想象一下,當這個用戶翻看第二頁的數據時,這會引發一個回發的事件,而且在這個時候GridView又會從數據源控件中獲得所有的150條記錄,但這時只需要顯示第二個10條(產品11到產品20)。

緩存與SqlDataSource SqlDataCourse在對屬性EnableCaching做簡單設置後允許數據集緩存數據。對於一個緩存的數據集,翻頁時不需要再訪問數據庫,從分頁開始到結束都緩存在內存裡。然而,初始化頁面時相同的問題發生了—所有的數據必須載入到緩存的數據集裡去。此外,這樣的話你還必須擔憂那些過期的數據(雖然你使用了SQL cache dependencies ,但在這裡已經沒意義了)。

在我不太科學的測試下,發現緩存數據和自定義分頁的速度差2倍以上……盡管,你看到緩存方式接近不緩存的方式。(但它始終沒有超過自定義分頁!)

更多關於SqlDataSource的數據集緩存,請看利用SqlDataSource緩存數據.

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