当我们在某个字段上分组行时,我们如何为 JQGrid 进行全局展开/折叠?

2022-01-11 00:00:00 jquery jquery-plugins javascript jqgrid

当我们在某个字段上分组行时,如何为 JQGrid 进行全局展开/折叠?

How can we have global Expand/Collapse for JQGrid when we have rows grouped on some field?

展开时,应展开所有组,折叠时应折叠所有组.

On expanding, it should expand all groups and on collapsing all groups should be collapsed.

推荐答案

同样的方法可以设置jqGrid的groupingView参数的groupCollapse属性的默认值就像您设置任何其他默认参数一样:

You can set default value of the groupCollapse property of the groupingView parameter of jqGrid in the same way like you set any other default parameter:

$.extend($.jgrid.defaults, {
    groupingView: {
        groupCollapse: true
    }
});

已更新:在评论中进行了额外解释后,我可以想象在某些情况下,当 所有 组从组将被展开/折叠.

UPDATED: After additional explanation in the comments I can me imagine that in some cases it can has the behavior when all groups will be expanded/collapsed if any from the groups will be expanded/collapsed.

var $grid = $("#list"), inOnClickGroup = false;

$grid.jqGrid({
    // ... other options
    grouping: true,
    onClickGroup: function (hid) {
        var idPrefix = this.id + "ghead_", id, i, l,
            groups = this.p.groupingView.sortnames[0];

        if (!inOnClickGroup && hid.length > idPrefix.length &&
                hid.substr(0, idPrefix.length) === idPrefix) {
            id = Number(hid.substr(idPrefix.length));
            if (typeof (groups[id]) !== "undefined") {
                inOnClickGroup = true; // set to skip recursion
                for (i = 0, l = groups.length; i < l; i++) {
                    if (i !== id) {
                        $(this).jqGrid('groupingToggle', this.id + 'ghead_' + i);
                    }
                }
                inOnClickGroup = false;
            }
        }
    }
});

参见演示.

相关文章