我正在使用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();
答案 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