私は従業員のいるグリッドを持っています。編集ボタンがあり、編集モードはポップアップに設定されています。編集するエンティティのEditorTemplateには、インセルまたはインライン編集モードで給与の履歴を持つ別のグリッドがあります。
どちらのグリッドもAjaxデータソースを使用しています。問題は、内側のグリッドバインディングにあります。Jsonの結果をajax呼び出しにフィードするコントローラーアクションでは、適切な給与履歴を返すために編集している従業員のIDが必要です。ただし、Kendo UI ASP.NET MVCラッパーは、編集する従業員を知る前に、エディターのある種のテンプレートをレンダリングし、ポップアップを要求するときにそれを編集します。
Read Ajax呼び出しで従業員IDをフィードするにはどうすればよいですか?
メイングリッド
@(Html.Kendo().Grid<MyProject.Business.Models.EmployeDTO>().Name("EmployeGrid")
.ToolBar(toolbar => toolbar.Create())
.Columns(cols =>
{
cols.Bound(o => o.someData).Title("Some Data");
cols.Bound(o => o.moreData).Title("More Data");
cols.Command(o =>
{
o.Edit();
o.Destroy();
}).Title(" ");
})
.Editable(editor => editor
.Mode(GridEditMode.PopUp)
.Window(window => window.Draggable().Resizable().HtmlAttributes(new { @style = "width:700px;" })))
.Sortable()
.Filterable()
.Groupable()
.DataSource(datasource => datasource
.Ajax()
.Model(model => model.Id(o => o.id))
.Read(read => read.Action("GetAll", "EmployesAjax"))
.Update(update => update.Action("Update", "EmployesAjax"))
.Create(create => create.Action("Create", "EmployesAjax"))
.Destroy(destroy => destroy.Action("Destroy", "EmployesAjax"))
)
)
内部グリッド(Views / Shared / EditorTemplates / EmployeDTO.cshtml内)
@Html.Kendo().Grid<MyProject.Business.Models.SalairyDTO>().Name("SalaryGrid")
.Columns(cols =>
{
cols.Bound(o => o.someInfo).Title("Some Info");
})
.DataSource(datasource => datasource
.Ajax()
.Model(model =>
{
model.Id(o => o.id);
model.Field(o => o.employe_id).DefaultValue(Model.id);
})
// NEED THE ID HERE
.Read(read => read.Action("GetByEmployeId", "SalairyAjax", new { id = "" }))
.Update(update => update.Action("Update", "SalairyAjax"))
.Create(create => create.Action("Create", "SalairyAjax"))
.Destroy(destroy => destroy.Action("Destroy", "SalairyAjax"))));