Не могу понять, как правильно использовать JqGrid с Asp.net MVC и Linq to Sql - PullRequest
0 голосов
/ 14 июля 2010

Кажется, у меня проблемы с тем, чтобы мои jqgrids работали хорошо с linq to sql в моем проекте asp.net mvc.

У меня проблема с использованием параметров sidx и sord. Большинство ресурсов, которые я нахожу, говорят, чтобы сделать что-то вроде

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

В Visual Studio 2010 (проект .net 4, MVC2) я получаю ошибку компиляции по порядку, потому что кажется, что нет расширения linq orderby, которое принимает в качестве параметра только строку, все они хотят делегат / lamda.

Как я могу реализовать упорядочение в своем приложении, чтобы мои сетки могли правильно сортироваться по столбцам?

Ответы [ 2 ]

1 голос
/ 14 июля 2010

вы можете сделать метод, который переводит строки в лямбда-выражения. Я не проверял это, но это может быть так:

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

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

}

вам также нужно будет отдельно настроить параметр asc / desc

0 голосов
/ 18 декабря 2012

Если вы добавите «using System.Linq.Dynamic;» вставленный вами код должен работать правильно.

Здесь есть небольшое соображение: OrderBy и Skip идут вместе, поэтому, если вы хотите перейти к записи, следует указать OrderBy. Я решил это, проверив, есть ли опубликованный параметр поля 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, проблема с сортировкой выражения Linq

...