2016-09-06 15 views
0

Grid.Mvcのヘルプが必要です。私は、例外エンティティフレームワークによって生成さIQueryableコレクションを渡してもらうよGrid.Mvc + 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'はメソッド 'Skip'の前に呼び出さなければなりません。

ドキュメントの状態:

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

などをあなたには、いくつかのページに移動すると、グリッドが.SKIP(N).Take(N)メソッドを呼び出し、あなたがデータをソートする場合、グリッドが[並べ替えまたはOrderByDescendingメソッドを呼び出します

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

+0

*アクセスしたときグリッドは.Skip(N)メソッドを呼び出し、データをソートすると、OrderByメソッドやOrderByDescendingメソッドなどが呼び出されます。*これから何を理解しましたか? 'OrderBy'または' OrderByDescending'を使用しなければならないと言うだけです。 –

+0

グリッドレンダリング時に例外が発生します – user3373603

+0

コードのどこかで 'OrderBy'または' OrderByDescending'を使用しましたか? –

答えて

2

MVCグリッドの説明:あなたは番目のデータをソートするときに、いくつかのグリッドが.SKIP(N).Take(N)メソッドを呼び出しページと に行く

電子グリッドは、[並べ替えまたは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); 
} 
関連する問題