2010-07-14 44 views
0

我似乎在我的asp.net mvc項目中讓我的jqgrids與linq to sql一起工作良好。無法弄清楚如何正確使用JqGrid與Asp.net MVC和Linq到Sql

我遇到的問題是正確使用sidx和sord參數。我發現大多數資源說做這樣的事情

var questions = context.Questions 
    .OrderBy(sidx + " " + sord) 
    .Skip(pageIndex * pageSize) 
    .Take(pageSize); 

在Visual Studio 2010(.NET 4項目,MVC2)我的,因爲它似乎沒有LINQ的OrderBy擴展,只需一拿到訂單的編譯錯誤字符串作爲參數,他們都希望委託/ lamda。

如何在我的應用程序中實現排序以便我的網格可以按列正確排序?

回答

1

您可以製作將字符串轉換爲lambda表達式的方法。 我沒有測試這一點,但它可能是這樣的:

private Expression<Func<Person, T>> orderbyExpression(string column) 
{ 
    switch (column) 
    { 
     case: "Name": 
      return p => p.Name; 

     case: "Sex": 
      return p => p.Sex; 
    } 

} 

你就會有如果加上「使用System.Linq.Dynamic理清遞增/遞減設置seperately以及

+0

我希望的東西有點更具可擴展性:我想你可以嘗試使用反射來獲取在每種情況下的性能/ – KallDrexx 2010-07-15 02:44:12

+0

,雖然可能不因爲Linq對於接受什麼表達方式很挑剔 – 2010-07-15 09:45:14

0

;」你粘貼的代碼應該正常工作。

有一個小的代價在這裏:排序依據跳過一起去,所以如果你想跳過至創紀錄的,應指定排序依據。我通過檢查是否有發佈orderby字段參數來解決此問題。

using System.Linq.Dynamic; 
... 

{ 
    var questions = context.Questions; 
    if (!string.IsNullOrEmpty(sidx)) 
     questions = questions.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize); 

    return questions.Take(pageSize); 
} 

本主題是有用的: jqGrid, Problem with sorting Linq expression

相關問題