kendoui网格分层,我如何传递父值?

时间:2014-08-06 09:26:45

标签: kendo-ui kendo-grid

我有一个KendoUI网格,其中包含另一个网格作为childtemplate

在内部网格中我有一个创建按钮,当我保存时,我将检索从主网格传递给父网格的值...我不知道如何传递它...

这是我的代码

@(Html.Kendo().Grid<xxx.Lib.Models.Richiesta.Richiesta>()
.Name("grid")
.Columns(columns =>
{
    columns.Bound(p => p.GUID).Hidden();
    columns.Bound(p => p.UTENTE).Title("Utente").Width(100);
    columns.Bound(p => p.ORA_ESECUZIONE).Title("Ora Esecuzione").ClientTemplate("#= moment(ORA_ESECUZIONE).format('DD/MM/YYYY hh:mm:ss') #");
    columns.Bound(p => p.STATO).Title("Stato");
    columns.Bound(p => p.NOTE).Title("Note");
    columns.Bound(p => p.ID_FREQUENZA).Title("Frequenza").ClientTemplate("#=FREQUENZA#").EditorTemplateName("Frequenza");
    columns.Bound(p => p.ID_TIPO_RICHIESTA).Title("Tipo Richiesta").ClientTemplate("#=TIPO_RICHIESTA#").EditorTemplateName("TipoRichiesta");
    columns.Bound(p => p.SORGENTE).Title("Sorgente");
    columns.Bound(p => p.ORA_INSERIMENTO).Title("Ora Inserimento").ClientTemplate("#= moment(ORA_ESECUZIONE).format('DD/MM/YYYY hh:mm:ss') #");
    columns.Command(command =>
    {
        command.Edit().Text(" ").UpdateText(" ").CancelText(" ");
        // command.Destroy().Text(" ");
    }).Width(172).Title("");
})
.DataSource(dataSource => dataSource
        .Ajax()
        .Events(events => events.Error("error_handler"))
        .Model(model =>
            {
                model.Id(p => p.GUID);
           }
         )
        .Create(create => create.Action("EditingInlineCreate", "Richieste"))
        .Update(update => update.Action("EditingInlineUpdate", "Richieste"))
    // .Destroy(destroy => destroy.Action("EditingInlineDestroy", "Richieste"))
)
.Pageable(pager => pager.Refresh(true))
.Events(events => events.DataBound("dataBound"))
.Sortable()
.Filterable()
.Editable(edt =>
    edt.ConfirmDelete("Confermare cancellazione?").Mode(GridEditMode.InLine)
)
.AutoBind(false)
.Scrollable(scr => scr.Height(400))
.Resizable(resize => resize.Columns(true))
.ClientDetailTemplateId("template")
.ToolBar(toolbar =>
{
    toolbar.Create().Text("Nuova richiesta");
    //toolbar.Template("Da " + Html.Kendo().DatePickerFor(x => x.DateFrom).ToHtmlString() +
    //    " a " + Html.Kendo().DatePickerFor(x => x.DateTo).ToHtmlString() + Html.Kendo().Button().Content("Ricerca").Name("btn").Events
    //    (events =>
    //    {
    //        events.Click("LoadData");
    //    }).ToHtmlString() +
    //    "<a class='k-button k-button-icontext k-grid-add' href='#' '>Nuova richiesta</a>");

    //
        //).ToHtmlString() +
        //"<a href=\"/Richieste?grid-mode=insert\" class=\"k-button k-button-icontext k-grid-add\"><span class=\"k-icon k-add\"></span>Aggiungi nuovo elemento</a>"

}
)

//onlick='customCommand()
)


@helper GridStrumenti()
{
@(Html.Kendo().Grid<xxx.Lib.Models.Richiesta.StrumentoRichiesta>()
                    .Name("grid_instruments_#=GUID#")
                    .Columns(columns =>
                    {
                        columns.Bound(o => o.STRUMENTO).Title("Strumento");
                        columns.Command(commands =>
                            {
                                commands.Edit().Text("").CancelText("").UpdateText("");
                            });
                    })
                    .DataSource(dataSource => dataSource
                        .Ajax()
                        .PageSize(5)
                        .Read(read => read.Action("LoadInstrumentDetail", "Richieste", new { guid = "#=GUID#" }))
                        .Model(model =>
                        {
                            model.Id(p => p.STRUMENTO);

                        })
                        .Create(create => create.Action("CreateNuovoStrumento", "Richieste"))
                        .Update(update => update.Action("EditingInlineUpdate", "Richieste"))
                    )
                    .Pageable()
                    .Sortable()

                    .ToolBar(toolbar =>
                        {
                            toolbar.Create().Text("Inserisci nuovo strumento");
                        })
                            .ToClientTemplate()
)
}

动作CreateNuovoStrumento应该有一个Guid,即#= GUID#...如何通过? 感谢

1 个答案:

答案 0 :(得分:0)

您将无法将父网格ID直接传递给Child New对象,但我已经使用了一些工作,希望它对您也有所帮助。

步骤1:将Edit事件添加到子网格&gt;

    .Events(evnt => evnt.Edit("EditNew"))

步骤2:通过 EditNew JS 将父ID添加到新创建的子模型中,如下所示 - &gt;

function EditNew(e) {        
        if (e.model.STRUMENTO == 0) {
             e.model.set("GUID", e.sender._cellId.substring(10,e.sender._cellId.indexOf("_active")));
        }
    }

如果上述代码中有任何错误,请与我们联系。