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

Javascript 当我们在某个字段上分组行时,如何对JQGrid进行全局展开/折叠?,javascript,jquery,jquery-plugins,jqgrid,Javascript,Jquery,Jquery Plugins,Jqgrid,当我们在某个字段上分组行时,如何对JQGrid进行全局展开/折叠 展开时,它应展开所有组,折叠时,所有组均应折叠。您可以设置jqGrid的groupingView参数的groupCollapse属性的默认值,方法与设置任何其他默认参数相同: $.extend($.jgrid.defaults, { groupingView: { groupCollapse: true } }); var $grid = $("#list"), inOnClickGroup =

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


展开时,它应展开所有组,折叠时,所有组均应折叠。

您可以设置jqGrid的
groupingView
参数的
groupCollapse
属性的默认值,方法与设置任何其他默认参数相同:

$.extend($.jgrid.defaults, {
    groupingView: {
        groupCollapse: true
    }
});
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;
            }
        }
    }
});
更新:在评论中进行额外解释后,我可以想象,在某些情况下,当所有组都将展开/折叠时,如果组中的任何组都将展开/折叠,则会出现这种行为

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;
            }
        }
    }
});
var$grid=$(“#list”),inOnClickGroup=false;
$grid.jqGrid({
//……其他选择
分组:对,
onClickGroup:函数(hid){
var idPrefix=this.id+“ghead”,id,i,l,
groups=this.p.groupingView.sortnames[0];
如果(!inOnClickGroup&&hid.length>idPrefix.length&&
hid.substr(0,idPrefix.length)==idPrefix){
id=编号(hid.substr(idPrefix.length));
if(typeof(组[id])!=“未定义”){
inOnClickGroup=true;//设置为跳过递归
对于(i=0,l=groups.length;i
请参阅。

$(“#网格展开-折叠”)。更改(函数(){
var idPrefix=“MyGridghead_u2;”,索引,长度,tarspan;
var groups=$(options.gridElement)[0].p.groupingView.sortnames[0];
如果($(this).is(':checked')){
对于(索引=0,长度=groups.length;索引

这不是我的要求,我希望对所有组进行折叠/扩展。您建议的选项是在每个组级别折叠。@Suresh:您能更清楚地解释一下您想要什么吗。图片可能会有帮助。jqGrid只支持一个级别的分组,所以我不明白“所有组的折叠”和“每个组级别的折叠”之间的区别在哪里。感谢您的回复。例如,在按日期分组时,我得到三组,为期3天。对于每个组,我们可以通过展开和折叠来查看/隐藏该组中的行。现在我的要求是,我需要有一个展开和折叠-在展开时,所有组都应该展开,在折叠时,所有组都应该折叠。我希望你明白我的意思。通过这种方式,它可以帮助用户避免扩大每个组以查看所有结果。但是,我们能在不干扰单个团体活动的情况下拥有此功能吗?我的意思是,我们需要在所有组的顶部添加一个额外的元素来扩展和折叠,并在这里处理功能。这样,用户可以在其他组处于折叠模式时单独展开特定组。@Suresh:stackoverflow不在有人实现您的任何需求的地方。我向您展示了如何枚举所有组,以及如何根据
groupingToggle
展开/折叠这些组。其他的改变你应该可以自己做。您只需将
onClickGroup
中的
this
替换为
$(“#列表”)[0]
,将
$(this)
替换为
$(“#列表”)
。问题是关于JQGrid而不是JQXgrid。
$('#jqxGrid').jqxGrid({
    groupsexpandedbydefault: true
});