2010-09-21 73 views
1

我正在將項目升級到.net 4.我的GridViews使用數據集並使用ObjectDataSource實現過濾,排序和分頁。Gridview過濾器和使用LINQ排序

將GridView連接到Linq查詢並實現排序,過濾和分頁的最佳實踐是什麼?

我仍然使用DataSet和ObjectDataSource,或者有沒有辦法使用另一種類型的DataSource讓我直接連接到處理過濾,排序和分頁的LINQ查詢結果?

編輯:

有一個在UI和DatabaseContext之間busineseslogic因此直接連接到我的ORM是不是一種選擇。它必須針對LINQ查詢結果(IQueryable)。在與ORM交談之前,我正在使用單獨的插入/更新/刪除功能來處理業務邏輯。

回答

1

你可以做的是保持你的ObjectDataSource(ODS),但採用你用來檢索數據的邏輯,並將它放入一個使用Linq(或任何其他數據訪問技術)爲你檢索數據的類。

要在ObjectDataSource中執行此操作,請指定將爲您完成工作的類的名稱,例如

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
          TypeName="CustomDAL" 
          SelectMethod="GetData"/> 

這將使得ODS創建CustomDAL類的一個實例,並調用GetData方法。

還支持排序和分頁,但它可能最好是自己實現與限制檢索的數據有關的實際邏輯。

要啓用分頁添加EnablePaging="True"到ODS宣言和您的SelectMethod您添加使用SkipTake方法,讓您如正確記錄StartRowIndex和每頁處理它們在你的LINQ

var results= (from user in context.users 
      where user.UserId == userId 
      select user).Skip(StartRowIndex).Take(PageSize).ToList() 
+0

非常感謝但沒有(創建)每個objectdatasource的函數。而只是將類型和所需的參數或linq查詢傳遞給1個泛型類。 – Jeroen 2011-07-31 00:17:49

+0

您可能最好創建自己的通用數據訪問類,而不是使用ODS並通過手動數據綁定填充網格視圖 – Nathan 2011-08-03 21:27:50