Telerik MVC层次结构网格,编辑器弹出窗口,在JavaScript事件中获取父数据

时间:2017-07-25 16:38:12

标签: javascript kendo-grid telerik-mvc

我一直在进行大量搜索,似乎无法找到任何可行的示例。

我将在这里简化代码,因为我有一个非常大的telerik mvc层次结构网格。这里是一个儿童模板几级,我需要上一级的父信息。

<script id="leagueTemplate" type="text/kendo-tmpl">
                @(Html.Kendo().Grid<LeagueViewModel>()
            .Name("grid_#=LeagueTypeId#")
            .ToolBar(toolbar =>
            {
                toolbar.Create().Text("Add New League(Window)");
            })
            .Events(e => e.Edit("leagueEdit")) // this function runs
            .DataSource(dataSource => dataSource
                .Ajax()
                .Model(model => model.Id(p => p.LeagueID))
                .Read(read => read.Action("Bound_League_Read", "Configuration", new { _leagueTypeId = "#=LeagueTypeId#" }))
                .Create(create => create.Action("League_Create", "Configuration").Data("getHeirarchyData")) // this function doesnt run
            )
                )
</script>

            function getHeirarchyData() {
                    console.log("get heirachy data"); // never runs
            }

            function leagueEdit(e) {

                // this runs
                // not sure how to get parent data from e

                }

1 个答案:

答案 0 :(得分:0)

可能有更好的方法可以解决这个问题,如果是这样的话,我会检查你的答案,但也许这会对同时有人提供帮助。

我通过设置模型的默认值来解决这个问题,除了字符串值之外,这个默认值非常有效,因为我必须将这些值作为模板语法字符串来访问。所以我只是将我的层次结构字段的字符串值等价物添加到模型中。

            .Model(model =>
              {
                model.Id(p => p.LeagueID);
                model.Field(l => l.strSportId).DefaultValue("#=SportId#");
                model.Field(l => 
                l.strLeagueTypeId).DefaultValue("#=LeagueTypeId#");
              }
            )

然后,当我调用编辑功能时,我可以得到如下值:

function leagueEdit(e) {
     var sportId = parseInt(e.model.strSportId);
     var leagueTypeId = parseInt(e.model.strLeagueTypeId);
}