2013-08-31 132 views
0

你能告訴我,我該如何使用分頁中的WebForms應用Repeater控件,我需要爲每個頁面的鏈接後面,下一頁,也是數字,恩。如何使用Repeater控制進行分頁?

<back>1,2,3,4....n<next>. 

這樣做的最佳方法是什麼?我不想使用PagedDataSource,因爲我在DB有大量的數據,所以我想在第一選擇做我DB每個網頁呼叫而不選擇所有項目。

回答

4

既然你不想使用PagedDataSource我會使用存儲過程分頁建議您。您可以將分頁詳細信息(如pageIndex,pageSize,sortBy,sortDirection(升序/降序))傳遞到您的存儲過程,然後您將只獲得返回的當前頁面所需的數據,您可以使用哪些數據爲您的中繼器提供形式爲DataTableList<MyDataClass>

對於分頁控件,您可以使用下拉控件,爲此您可以在存儲過程的同時返回總行數(在應用分頁之前),以便可以用數字1,2,3...填充下拉列表,並且等等。也許你可能需要將當前pageIndex保存在hidden field,您將點擊後更新btnBackbtnNext,或者您的下拉列表中的OnSelectedIndexChanged事件。

我只是描述我的想法的總體情況,我會參考以下鏈接的代碼片段,您可以使用上手:

希望這些信息足以讓你開始。也可能有一些更好的編程習慣,因爲我沒有那種經驗,這是我可以推薦的。如果有人有更好的建議,請在下面評論。

安東

+0

不錯,我還想補充一點,如果使用EF你總是可以跳過計數()和Take() – Gonzix

+0

感謝您的回覆,我看到您發佈的第一個鏈接,是不是很清楚,你可以鏈接我關於分頁使用存儲過程與C#示例代碼的其他鏈接?我找不到類似的東西。 – ezechiele2517

+0

@ ezechiele2517看看這篇文章,可能是存儲過程[這裏](http://stackoverflow.com/a/8938957/1479895)稍微簡單一點。另外[這裏](http://basquang.wordpress.com/2011/03/18/stored-procedures-paging-solution-in-asp-net-mvc-2/)我不想發佈的廣泛解決方案,因爲它可能會讓你感到困惑。 C#部分應該是在調用存儲過程時(就像使用實體框架的方法一樣),並且可能將結果作爲DataTable取回。 –