3

私は従業員のいるグリッドを持っています。編集ボタンがあり、編集モードはポップアップに設定されています。編集するエンティティの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("&nbsp;");
})
.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"))));
4

2 に答える 2

3

基本的に、内部グリッドのAutoBindオプションをfalseに設定し、外部グリッドの編集イベントを使用して読み取り要求を実行し、値を追加パラメーターとして渡すことをお勧めします。

次に例を示します。

function onEditOfEmployeGrid(e){
    $('#SalaryGrid').data().kendoGrid.dataSource.read({id:e.model.EmployeeID})
}
于 2012-11-14T19:35:37.000 に答える
0

グリッド内のaddtionaldataパラメーターを使用して、グリッドから値を渡すことができます。(左側)のRouteIDは、ViewData["RouteID"]を使用してグリッドポップアップエディタ内で参照できます。お役に立てば幸いです

     .Editable(editable => editable.Mode(GridEditMode.PopUp)
         .TemplateName("busStop")
         .DisplayDeleteConfirmation(true)
         .Window(window => window.Modal(true).Resizable().Draggable())
         .AdditionalViewData(new { RouteID = Model.RouteID }))
于 2013-03-22T15:55:59.823 に答える