Kendo Grid MVC - 刷新子/细节网格

时间:2014-02-24 13:03:25

标签: jquery kendo-ui kendo-grid kendo-asp.net-mvc

我正在使用Kendo Grid设置主细节。详细信息网格名为DetailsGrid _#= Id#,以便它可以访问父记录的ID - 这部分工作正常。

我已经设置了详细信息网格来更新支持数据的某些部分,并且需要能够在$ ajax调用成功时刷新详细信息网格。我尝试使用以下方法选择细节网格:

var childGrid = $('#DetailsGrid_#=Id#').data("kendoGrid");
childGrid.refresh();

但是当我运行这段代码时,我得到一个Jquery错误,说“未捕获的错误:语法错误,无法识别的表达式:DetailsGrid _#= Id#”

有人能建议选择细节网格的正确方法,还是另一种调用刷新方式?

更新:对查询选择器做了一些进一步的研究后,我发现我需要逃避=& #个字符。我现在修改了如下代码,它超出了“无法识别的表达式”错误,但我现在得到错误“无法调用未定义的方法'刷新',因此网格无法被识别

var param = "DetailsGrid_#=Id#";
                var escapedParam = param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@@])/g, '\\$1');
                //function escape(param) {
                //    return param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@@])/g, '\\\\$1');
                //}
                var childGrid = $('#' + escapedParam ).data("kendoGrid");
                childGrid.refresh();

2 个答案:

答案 0 :(得分:3)

因为,我不知道你如何指定网格的ID。

获取要刷新的网格的ID。将其存储在变量中。

var newId = Id;// Id is Grid Id

var childGrid = $('#DetailsGrid_' + newId).data("kendoGrid");
childGrid.refresh();

答案 1 :(得分:1)

您不能在此上下文中使用#=Id#。你必须找到Id并使用像Vivek Parekh说的那样。 我有一个例子可以帮助你: 编辑行时,您可以ID获取$("#Id").val(),以便按代码获取网格:

var childGrid = $('#DetailsGrid_'+$("#Id").val()).data("kendoGrid");

请记住,您只能在编辑行时使用$("#Id").val(),这是编辑行的ID