动态展开循环中的子网格- JQGrid
Dynamically Expand Subgrid in a loop - JQGrid
我有一个网格与子网格使用subGridRowExpanded.
我想动态扩展网格的一些行,所以我写了下面的内容在GridComplete事件的第一个网格。id是我的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事件中,我在每一行中都勾选了复选框。
那么,这里我需要勾选一些复选框。
但问题是,
subgrid_row_id出错
。最后一个要扩展的子网格ID在父网格的SubGridRowExpanded中分配。
注意:我手动为子网格
中的每一行添加复选框如果我理解正确的话,你的问题与答案中讨论的非常接近。您尝试做的似乎与subGridOptions
选项的expandOnLoad: true属性应该做的相同。正如我在回答中所描述的那样,jqGrid不支持Ajax请求排队。如果执行
$("#myGridName").expandSubGridRow(ids[0]);
与远程datatype
或subgridtype
('json'或'xml') Ajax请求将被发送到服务器。直到我们从服务器收到相应的响应,内部属性
$("#myGridName")[0].grid.hDiv.loading
将设置为true
,并且所有其他Ajax请求(例如来自$("#myGridName").expandSubGridRow(ids[1])
的请求)将只是跳过(忽略)。
同样的问题(bug)存在于当前expandOnLoad: true
的实现中。如果你在官方的jqGrid演示中打开"Hierarchy (4.0) new"树节点,然后查看演示"Expand all Rows on load",你会看到不是所有的行都像承诺的那样正确地展开(你必须滚动网格才能看到所有子网格)。
我认为要正确地实现子网格在负载上的扩展,你应该做以下事情
- 您应该检查已折叠的子网格列表(相应的行具有"sgcollapse"类),并且只展开第一个找到的子网格。
- 下一个子网格的扩展应该在服务器的响应被接收和处理之后才进行。
我可以推荐你使用ajaxSubgridOptions
jqGrid选项的success
回调函数,因为加载子网格后没有loadComplete
事件。当前在子网格中Ajax请求的实现使用了jQuery的complete
回调函数。ajax(见这里),它将在 success
回调之前调用。因此,可以将success
回调定义为jqGrid的ajaxSubgridOptions
选项的方法。在success
回调中,您可以为下一个节点调用$("#myGridName").expandSubGridRow(ids[i])
(如果仍有未展开的节点)。你可以打开所有的子网格。
为了更有效地枚举子网格,答案可能对您有帮助。
- jqGrid树网格问题
- 使用requireJS的jqGrid-网格加载但不起作用
- 我没有'我不知道为什么我的jqGrid子网格没有'不要给我看数据
- 在 jqGrid 中添加子网格行的事件
- jqGrid - 是否有任何“网格编辑模式”
- jqGrid-当我点击网格中的另一个复选框时,选中多选复选框
- jqGrid-网格初始化事件
- jqGrid-如何获取当前网格的标题
- jqgrid-子网格在reloadGrid上折叠(父网格自动重载)
- jqGrid:在页面上将整个网格居中
- jqgrid子网格row_id空格不起作用PHP jquery
- 当网格视图设置为 true 时,Jqgrid 在 IE9 中显示“正在加载”
- 子网格未填充在免费的 jqGrid 中
- 在 jqGrid 中设置多个子网格的样式,使它们水平对齐
- 将扩展节点的状态保存在 jqgrid 树网格中
- 如何确定可见 jqGrid 网格的 ID
- 如何在 jqgrid 中删除后将焦点设置为网格
- 如何在网格数据绑定为动态时为 jqgrid 单元格设置自定义标题
- 我需要jqgrid来刷新整个页面,而不仅仅是网格
- 动态展开循环中的子网格- JQGrid