我使用subGridRowExpanded为子网格创建子网格。
我想动态扩展网格的某些行,所以我写了以下内容 在第一个网格的GridComplete事件中。 ids是我的网格的行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中分配。
注意:我手动将复选框添加到子网格中的每一行
先谢谢。
答案 0 :(得分:0)
如果我理解你是正确的,那么你就会遇到the answer中讨论的非常接近的问题。您尝试做的似乎与subGridOptions
选项的expandOnLoad: true属性相同。就像我在the answer中描述的那样,jqGrid不支持对Ajax请求进行排队。如果你执行
$("#myGridName").expandSubGridRow(ids[0]);
使用远程datatype
或subgridtype
('json'或'xml'),Ajax请求将被发送到服务器。直到我们从服务器收到内部属性的相应响应
$("#myGridName")[0].grid.hDiv.loading
将设置为true
,而$("#myGridName").expandSubGridRow(ids[1])
中的所有其他Ajax请求将仅跳过(忽略)。
expandOnLoad: true
的当前实现中存在同样的问题(错误)。如果您在the official jqGrid demo“Hierarchy(4.0)new”树节点中打开,然后查看演示“在加载时展开所有行”,您将看到并非所有行都已正确扩展承诺(你必须滚动网格才能看到所有的子网格。)
我认为要正确地在负载上扩展子网格,你应该做以下的
我建议您使用success
jqGrid选项的ajaxSubgridOptions
回调函数,因为加载子网格后没有loadComplete
事件。子网格中当前的Ajax请求实现使用jQuery.ajax的complete
回调函数(请参阅here),在 success
回调之前将其称为。因此,您可以将success
回调定义为jqGrid的ajaxSubgridOptions
选项的方法。在success
回调内部,您可以为下一个节点调用$("#myGridName").expandSubGridRow(ids[i])
(如果仍未展开)。你可以打开所有子网格。
更有效地枚举子网格the answer可能对您有所帮助。