2

このコードを使用してデータを取得し、剣道グリッドにプッシュしています

public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
    return Json(GetData(request), JsonRequestBehavior.AllowGet);
}

private DataSourceResult GetData(DataSourceRequest request)
{
    var Items = _db.Item.Local.ToDataSourceResult(request, x => new
    {
        ID = x.ID,
        Title = x.Title,
        LastEdited = x.User.LoginName,
        Category = x.CategoryItem.Title,
        DateEdited = x.DateEdited
    });
    return Items;
}

グリッドのビューでモデルを使用せず、グリッドにすべてを理解させます。これはすべて機能し、ページを閲覧することもできます。ただし、並べ替えメソッドを追加すると、たとえば次の例外がスローされます。

Invalid property or field - 'Category' for type: Item

そして、ページをリロードしてリクエストをクリアするまで DataSourceRequest にソートがあるため、後続の各リクエストは失敗します。このコードに追加する必要がある構成に関して、ここで何か不足していますか?

4

1 に答える 1

8

ええ、あなたのグリッドは DataSourceResult にそれを伝えるからです"I'll sort by Category "

しかし、あなたDataSource (_db.Item.Local)には、「Category」という名前のフィールドがありません。

(あなたの x => new{Category = x.CategoryItem.Title,} は、「並べ替え」が完了した後にカテゴリを選択するだけです)。

したがって、次のようなものを試すことができます:

_db.Item.Local.Select(x=> new {
    Category = x.CategoryItem.Title
    }).ToDataSourceResult(request)
于 2013-02-27T15:28:21.303 に答える