1

我有一个使用 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 中分配。

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

提前致谢。

4

1 回答 1

0

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

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

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

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

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

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

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

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

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

为了更有效地枚举子网格,答案可能对您有所帮助。

于 2011-11-08T10:57:17.003 回答