2009-05-21 171 views
3

我使用LINQ到SQL來獲取我的數據,當我在我的數據網格上設置頁面大小,並且用戶選擇頁面2時,我得到一個回發並重新讀取所有數據顯示第二頁。我懷疑應該有更好的方式來做到這一點,這種方式最終只會讀取我需要顯示的數據。我想知道是否有任何代碼示例...Asp.Net分頁最佳實踐

回答

2

如果你想真的減輕數據庫負載,看看client-side paging ...

+0

這真的取決於數據。谷歌無法在一次返回一百萬頁的搜索中脫離客戶端分頁。 (雖然,這聽起來像他從DB加載整個集合的方式) – JerSchneid 2009-05-21 04:12:32

0
public static IEnumerable<new_log> Search(dbDataContext db, int _user,int _pageNumber, int _rowCountPerPage) 
{ 
var query = (
        from p in db.new_log 
        where p.created_by == (_user < 0 ? p.created_by : _user) orderby p.id descending 
        select p 
       ) 

       .Skip(_pageNumber * _rowCountPerPage).Take(_rowCountPerPage); 
return query; 

} 

要點:

1.我們必須禁用頁面或控制水平viewsate以提高性能。

<%@ Page Language="C#" EnableViewState="false" %> OR <asp:GridView 
    EnableViewState="false" runat="server" /> 

2.試着寫單個查詢來獲得結果。

http://forums.asp.net/p/1779601/5120205.aspx/1?p=True&t=634814907594742030