【问题标题】:Kendo Grid MVC - Refreshing child / detail gridKendo Grid MVC - 刷新子/细节网格
【发布时间】:2014-03-26 04:00:16
【问题描述】:

我正在使用带有主详细信息设置的 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();

【问题讨论】:

  • 可以显示Id的自定义模板吗?
  • 我只会在父网格上调用刷新,如果子网格在父网格刷新后打开,子网格将关闭。我也想知道如何做到这一点,但没有成功

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


【解决方案1】:

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

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

var newId = Id;// Id is Grid Id

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

【讨论】:

  • 对不起,我的错误。我确实在原始代码中有#。我会更新问题
  • 网格名称不变,始终是#DetailsGrid_#=Id#。 _#=Id# 是从父网格中提取 Id 的 Kendo 符号
【解决方案2】:

您不能在这种情况下使用#=Id#。你必须找到 Id 并像 Vivek Parekh 所说的那样使用。 我有一个可以帮助你的例子: 当您编辑一行时,您可以通过$("#Id").val() 获得ID,因此您可以通过代码获得Grid:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多