2014-02-24 55 views
2

我正在使用Kendo网格和主细节设置。详细信息网格名为DetailsGrid _#= Id#,以便它可以访问父记录的ID - 此部分工作正常。Kendo Grid MVC - 令人耳目一新的儿童/细节网格

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

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

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

任何人都可以建议选择细节网格的正确方法,或另一种调用刷新的方式?

更新:对查询选择器做了一些进一步的研究后,我发现我需要转义= &#个字符。现在我已经修改了代码如下这不会越过“无法识别的表达”的错误,但我现在得到了错误“无法调用未定义的方法‘刷新’”所以电网不被认可

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(); 
+0

你可以显示'Id'的自定义模板吗? –

+0

我只要在父网格上调用刷新,如果子网格在父网格被刷新后打开,则子网格将关闭。我想知道如何做到这一点,但一直没有成功 – CSharper

回答

2

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

获取要刷新的网格的标识。将其存储在一个变量中。

var newId = Id;// Id is Grid Id 

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

对不起,我的错误。我在原始代码中有#号。我会更新问题 – user918064

+0

查看更新的答案。 –

+0

网格名称不会改变,它总是#DetailsGrid _#= Id#。 _#= Id#是Kendo符号,它从父网格中提取Id – user918064

1

在此上下文中不能使用#=Id#。你必须找到Id并使用像Vivek Parekh说。 我有一个例子,它可以帮助你: 当你编辑的行,就可以得到ID通过$("#Id").val()这样你就可以通过代码得到电网:

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

记住,你只能使用$("#Id").val()当您编辑一排,这是编辑的行的ID

相关问题