0

Grid.Mvc に関するヘルプが必要です。IQueryableEntity 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 で発生しましたが、ユーザー コードで処理されませんでした

追加情報: メソッド 'Skip' は、LINQ to Entities の並べ替えられた入力に対してのみサポートされています。メソッド「OrderBy」は、メソッド「Skip」の前に呼び出す必要があります。

ドキュメントには次のように記載されています。

データ ソースがデータベースの場合 (たとえば)、IQueryable コレクションをグリッドに渡す必要があります。Grid.Mvc は IQueryable インターフェイスを使用して、データ コレクションに対するクエリ式を作成します。

あるページに移動すると、グリッドは .Skip(N).Take(N) メソッドを呼び出し、データを並べ替えると、グリッドは OrderBy または OrderByDescending メソッドなどを呼び出します。

チュートリアル リンク: Grid.Mvc

4

1 に答える 1

2

MVC グリッドの説明:

一部のページに移動すると、グリッドは .Skip(N).Take(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);
}
于 2016-09-06T06:19:49.910 に答える