Grid.Mvc + Entity Framework исключение

голоса
0

Нужна помощь с Grid.Mvc. Я передаю IQueryableколлекцию произведенного Entity Framework и получить исключение

Метод действий:

public ActionResult Index(int id)
{
        IQueryable<Document> documents = _dbContext.Document;

        var model = new DocumentListViewModel()
        {                Documents = documents
        };

        return View(model);
}

DocumentListViewModel:

public class DocumentListViewModel
{
    public IQueryable<Document> Documents { get; set; }
}

Посмотреть:

@model CompanyName.DocFlow.Web2.Models.DocumentListViewModel
@using GridMvc.Html;

@Html.Grid(Model.Documents).Columns(columns =>
                {
                    columns.Add(x => x.CreatedDate).Titled(Дата);//.Filterable(true);
                    columns.Add(x => x.IncomingNumber).Titled(Входящий номер);//.Filterable(true);
                    columns.Add(x => x.Description).Titled(Краткое описание);
                }).WithPaging(10)

Исключение:

Исключение «» Типа System.NotSupportedException произошло в EntityFramework.SqlServer.dll, но не было обработано в пользовательском коде

Дополнительная информация: Метод «Пропустить» поддерживается только для отсортированного ввода в LINQ к объектам. Метод «OrderBy» должен вызываться перед методом «Пропустить».

В документации говорится:

Если источник данных является базой данных (например), вы должны пройти IQueryable коллекции в сетку. Grid.Mvc использует IQueryable интерфейса для построения выражений запросов к вашей коллекции данных.

Когда вы идете на какую-то страницу сетка вызывает Пропустите (N) .Снять (N) методу и при сортировке данных в сетке вызывает OrderBy или методы OrderByDescending и т.д.

Учебник ссылка: Grid.Mvc

Задан 06/09/2016 в 04:39
источник пользователем
На других языках...                            


1 ответов

голоса
2

MVC сетки Описание:

Когда вы идете на какую-то страницу сетка вызывает Пропустите (N) .Снять (N) методу и при сортировке данных в сетке вызывает OrderBy или методы OrderByDescending и т.д.

Вы можете сделать сортировочный метод GET процесс поля инкапсулировать или вы можете сделать это же операцию в методе ActionResult

Образец кода :

public class DocumentListViewModel
{
    private IQueryable<Document> _Documents;
    public  IQueryable<Document> Documents 
   { 
     get 
     { 
        return _Documents.Ordery(x=>x.Id);
     } 
     set 
     { 
        _Documnets = value;
     } 
   }
}

или

public ActionResult Index(int id)
{
        IQueryable<Document> documents = _dbContext.Document.OrderBy(x=>x.Id);

        var model = new DocumentListViewModel()
        {             
            Documents = documents
        };

        return View(model);
}
Ответил 06/09/2016 в 05:19
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more