【问题标题】:Dynamically Expand Subgrid in a loop - JQGrid在循环中动态扩展子网格 - JQGrid
【发布时间】:2011-12-24 05:02:35
【问题描述】:

我有一个使用 subGridRowExpanded 的子网格的网格。

我想动态扩展网格的一些行,所以我写了以下内容 在第一个网格的 GridComplete 事件中。 ids 是我的 Grid 的行 id 数组

for(int i =0; i< ids.length; i++) {
    //Checking with condition
    $("#myGridName").expandSubGridRow(ids[i]);
}

我也尝试使用以下代码,但由于某些原因,第二级 GridComplete 中的复选框仅添加到最后展开的行。

$("#myGridName").expandSubGridRow(ids[0]);
$("#myGridName").expandSubGridRow(ids[1]);

上面的代码扩展了适当的行。但是,

在 Subgrid 的 GridComplete 事件中,我在每一行中都有复选框。

所以,在这里我需要检查一些 Chekc 框。

但问题是,

subgrid_row_id 出错了

即最后一个要扩展的子网格的ID在父网格的SubGridRowExpanded中分配。

注意:我手动将复选框添加到子网格中的每一行

提前致谢。

【问题讨论】:

  • 对不起,但我不明白您在“要扩展的最后一个子网格的 ID 在父网格的 SubGridRowExpanded 中分配”下的意思。复选框的问题也不清楚。此外,了解有关您使用的网格和子网格的更多信息也很重要。例如:您是从服务器加载数据还是用本地数据填充网格?您将哪种数据类型用于网格和子网格?
  • 在网格和子网格中,我使用 JSON 数据并从服务器填充两个网格。我没有在循环中运行,而是尝试仅扩展两行网格,即 $("#myGridName").expandSubGridRow(ids[0]);和 $("#myGridName").expandSubGridRow(ids[1]);... 然后在这里展开两行但是,复选框仅在最后展开的网格中。

标签: javascript jqgrid subgrid


【解决方案1】:

如果我理解你是正确的,那么你有一个非常接近的问题,如 the answer 中所讨论的那样。您尝试做的似乎与subGridOptions 选项的expandOnLoad: true 属性应该做的一样。就像我在the answer 中描述的那样,jqGrid 不支持 Ajax 请求的排队。如果你执行

$("#myGridName").expandSubGridRow(ids[0]);

使用远程datatypesubgridtype('json' 或'xml'),Ajax 请求将被发送到服务器。直到我们收到来自服务器的相应响应的内部属性

$("#myGridName")[0].grid.hDiv.loading

将被设置为 true 并且所有其他 Ajax 请求(例如来自 $("#myGridName").expandSubGridRow(ids[1]))将被跳过(忽略)

expandOnLoad: true 的当前实现中存在相同的问题(错误)。如果您在the official jqGrid demo 中打开“Hierarchy (4.0) new”树节点,然后查看演示“Expand all Rows on load”,您将看到 并非所有行都按照承诺正确展开(您必须滚动网格才能查看所有子网格)。

我认为要正确实现加载子网格的扩展,您应该执行以下操作

  • 您应该检查折叠子网格的列表(相应行具有“sgcollapsed”类)并仅展开第一个找到的子网格
  • 下一个子网格的扩展应该只有在收到并处理来自服务器的响应后才能进行

我可以推荐你使用ajaxSubgridOptions jqGrid 选项的success 回调函数,因为加载子网格后没有loadComplete 事件。子网格中 Ajax 请求的当前实现使用 jQuery.ajaxcomplete 回调函数(请参阅 here),该函数将在 before success 回调之前调用。因此,您可以将success 回调定义为jqGrid 的ajaxSubgridOptions 选项的方法。在success 回调中,您可以为下一个节点调用$("#myGridName").expandSubGridRow(ids[i])(如果仍有未展开的节点)。顺便可以打开所有子网格。

更有效地枚举子网格the answer 可能对您有所帮助。

【讨论】:

  • @stacktrace:不客气!我希望,我理解纠正你的问题。
猜你喜欢
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2022-06-10
  • 1970-01-01
相关资源
最近更新 更多