問題の説明のために私自身と同様の単純化されたコードがあります:私はこのモデルクラスを持っていました:
public class Parent
{
public Guid Id { get; set; }
public string Something { get; set; }
public Child[] Children { get; set; }
}
public class Child
{
public string Code { get; set; }
public string Title { get; set; }
}
ビューがあります:
@(Html.Kendo().Grid<Stihl.UnfairCompetitionWeb.DataLayer.Models.Parent>(Model.Parents)
.Name("grid")
.Columns(columns => {
columns.Bound(e => e.Something);
foreach (Stihl.UnfairCompetitionWeb.DataLayer.Models.LanguageModel l in Model.Languages)
{
columns.Bound(e => e.Children[Model.Languages.IndexOf(l)].Title).Title(l.Code).HeaderHtmlAttributes(new { data_language = l.Code });
}
columns.Command(command => command.Destroy());
})
.ToolBar(toolbar => {
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable((p => p.PageSizes(new[] { 5, 10, 20, 50 })))
.Sortable()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(true)
.PageSize(10)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(e => e.Id))
.Read(read => read.Action("ProductCategories_Read", "Admin"))
.Create(create => create.Action("ProductCategories_Create", "Admin"))
.Update(update => update.Action("ProductCategories_Update", "Admin"))
.Destroy(destroy => destroy.Action("ProductCategories_Delete", "Admin"))
)
)
したがって、コントローラーの Crud メソッドでは、Aggregates、Filters、Groups、Sorts などの DataSourceRequest プロパティは null です。
JFI - 他のケースでも同じ方法でグリッドを使用していますが、正しく動作します。
私の意見では、この場合の問題点は、グリッド列が配列の項目にバインドされていることです。モデルクラスのいくつかの単純なプロパティではありません。それにはさらに問題がありましたが、私はまだ解決していません。
DataSourceRequest の問題は最後です。それがなければ、ページング、ソート、フィルタリング、およびその他の機能を実装できません。これは、通常、ビューの 1 つのキーワードとコントローラーの単純なコードについてです。
クライアント側でどのように動作しますか?
PS: コントローラ メソッド。ただし、コントローラーでは、着信 DataSourceRequest に記述された null データが含まれています。
public ActionResult Parents_Read([DataSourceRequest] DataSourceRequest request)
{
return Json(entities.Parents.ToModel(entities.Languages.ActiveLangauges()).ToDataSourceResult(request));
}