1

我想创建一个带有 grouping:true 的 jqGrid,但是只有第一个组展开,另一个组在展开这个组时保持折叠,被折叠,我需要从服务器加载数据。

有人有解决方案吗?

PS:我需要使用分组,为什么用户可以动态选择其他列进行分组。

4

2 回答 2

3

要实现您的要求,您应该使用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

于 2011-11-21T09:58:02.147 回答
1

设置你的数据类型:'local'

然后

$("#list").setGridParam({datatype:'json'}).trigger('reloadGrid',[{page:1}]);

于 2012-01-09T16:18:55.663 回答