DataGrid連接Access的快速分頁法(1)——需求與現狀
一、需求分析
DataGrid是一個功能強大的ASP.NET Web服務器端控件,它除了能夠按各種方式格式化顯示數據,還可以對數據進行動態的排序、編輯和分頁。大大減輕了廣大Web程序員的工作量。實現DataGrid的分頁功能一直是很多入門者感到棘手的問題,特別是自定義分頁功能,實現的方法多種多樣,非常靈活。
目前大家公認性能最好的應該數SQL Sever結合存儲過程的解決方案。因為在SQL Server的存儲過程裡面可以使用游標(Cursor)來遍歷數據庫表中所有的行,結合一個計數器變量就可以快速定位到數據庫表中的某一行了。但是在采用Access數據庫的ASP.NET應用程序中,一直沒有一種較好的解決方案。
我們知道,在ASP中可以使用ADO的游標來快速定位當前頁面的數據在數據庫表中的位置。可是ADO.NET中沒有游標這個東西,所以傳統的DataGrid分頁方法都是用諸如“SELECT * FROM Item”的SQL語句從數據庫表中取出所有的記錄,然後DataGrid的自動分頁功能會幫你顯示相應分頁的數據。
二、目前的解決方案
很多人已經意識到了上面描述的問題,並提出了解決方法,即采用自定義分頁,每次從數據庫表中取出要顯示的數據。那麼,怎樣取呢?答案就我知道的大概有5種以上吧。使用不同的算法,將會得到不同的效率。經過我粗略的測試,最慢的算法耗費的時間大概是最快的3倍!而且這個數字會隨著記錄總數的增加而增加。
為了方便接下來的討論,在展示 SQL 語句之前,首先讓我們做如下約定:
PageIndex ItemId
ProductId
Price
0
001
0011
$12
002
0011
$13
003
0011
$12
1
004
0012
$13
005
0012
$11
006
0012
$14