我想创建一个带有 grouping:true 的 jqGrid,但是只有第一个组展开,另一个组在展开这个组时保持折叠,被折叠,我需要从服务器加载数据。
有人有解决方案吗?
PS:我需要使用分组,为什么用户可以动态选择其他列进行分组。
要实现您的要求,您应该使用groupCollapse: true
以折叠形式显示所有组。例如像
grouping: true,
groupingView: {
groupField: ['invdate'],
groupCollapse: true,
groupDataSorted: true
}
然后在填充网格后展开关于groupingToggle的第一组。例如,您可以在内部使用以下代码loadComplete
:
loadComplete: function () {
var $this = $(this), firstGroup = $this.find('tr.jqgroup:first');
if (firstGroup.length > 0) {
$this.jqGrid('groupingToggle', firstGroup[0].id);
}
}
如果您提醒网格的分组行的 id 将如何构造这一事实,您可以将代码简化为以下
loadComplete: function () {
$(this).jqGrid('groupingToggle', this.id + 'ghead_0');
}
请参阅演示。
要动态更改用于分组的列,您可以使用groupingGroupBy
方法:
$("#list").jqGrid('groupingGroupBy', columnName);
例如$("#list").jqGrid('groupingGroupBy', 'ship_via');
. 你应该明白,groupField
只有在下一次填充网格体之后才会使用新的。因此,如果您想在服务器上定义分组顺序并将其包含在服务器响应中,您应该调用groupingGroupBy
方法 inside ofbeforeProcessing
而不是 inside of loadComplete
。
设置你的数据类型:'local'
然后
$("#list").setGridParam({datatype:'json'}).trigger('reloadGrid',[{page:1}]);