【发布时间】:2012-10-15 22:04:32
【问题描述】:
有没有一种方法可以在 jqgrid 中实现展开全部/折叠所有功能以进行分组功能?据我了解,设置 groupingCollapse: true 会折叠数据,但我想让它动态化,可能是单击放置在网格内的 +/- 图标。提前感谢您的任何建议/帮助...
【问题讨论】:
有没有一种方法可以在 jqgrid 中实现展开全部/折叠所有功能以进行分组功能?据我了解,设置 groupingCollapse: true 会折叠数据,但我想让它动态化,可能是单击放置在网格内的 +/- 图标。提前感谢您的任何建议/帮助...
【问题讨论】:
我想您会在the old answer 中找到您问题的答案。答案的主要思想是使用jqGrid的参数groupingView的sortnames[0]属性。它是一个数组,其中元素可用于构造分组标题的 id,可以使用groupingToggle 方法折叠或展开组标题。以这种方式您可以展开或折叠所有组。
【讨论】:
groupCollapse 是false 时,我可以折叠网格中的所有组?我不希望网格在刷新时崩溃。
groupingToggle 方法从网格中展开/折叠任何组。要获取组的名称(groupingToggle 的参数),需要使用组标题行中的id,或者可以根据groupingView 的信息构造它,但groupingView 的结构取决于 jqGrid 的版本。有关其他代码片段,请参阅 the answer。你有什么问题?你需要实现什么?
groupCollapse: false。可能您应该在描述您的场景和实施问题的地方打开新问题。
这是特定于 jqgrid 的特定版本的,它扩展了所有层,但它又短又甜,我忍不住贴出来。
function expandAll() {
$("#myGrid .ui-icon-circlesmall-plus").trigger("click");
}
【讨论】:
有了 Oleg 的回答/建议和 Jqgrid4.4.1,这就是我所做的。当您想在单击某个按钮时展开/折叠所有行时,此方法有效...
function expandCollapseGroups(expandAll) {
var $grid = $("#grid");
var idPrefix =$grid[0].id + "ghead_0_", trspans;
var groups =$grid[0].p.groupingView.groups;
if ($grid[0].p.grouping) {
for (var index = 0; index < groups.length; index++) {
if (expandAll) {
trspans = $("#" + idPrefix + index + " span.tree-wrap-" +$grid[0].p.direction + "." +$grid[0].p.groupingView.plusicon);
} else {
trspans = $("#" + idPrefix + index + " span.tree-wrap-" +$grid[0].p.direction + "." +$grid[0].p.groupingView.minusicon);
}
if (trspans.length > 0) {
$grid.jqGrid('groupingToggle', idPrefix + index);
}
}
}
}
【讨论】: