jqgrid - 动态启用分组

var*_*ash 2 jqgrid

我能够从jqgrid演示页面中的示例实现分组功能.但是我不想默认启用分组,但是在更改选择列表时我想启用分组功能.我尝试了几种选择,但没有一种是成功的?有人可以帮助我,可能是我错过了什么.这是我的代码......

$("#dynamicGrouping").change(function() { 
    var value = $(this).val(); 
    if(value) { 
        if(value == '') { 
            $('#grid').jqGrid('groupingRemove', true); 
        } else { 
            $('#grid').jqGrid('setGridParam', { grouping:true });
            $('#grid').jqGrid('groupingGroupBy', value);
            $('#grid').trigger('reloadGrid');
        } 
    }
});
Run Code Online (Sandbox Code Playgroud)

我的网格定义:

jQuery(function() {
    $('#grid').jqGrid({
            .....
            .....
        grouping: false,
        groupingView : { 
                groupField : ['field_name'], 
            groupColumnShow : [true], 
            groupText : ['<b>{0} - {1} Item(s)</b>'], 
            groupCollapse : false, 
            groupOrder: ['asc'], 
            groupDataSorted : true 
            },
        .......
        .......
    });
});
Run Code Online (Sandbox Code Playgroud)

Ole*_*leg 12

我猜你在代码中犯了一些错误.您发布的代码似乎是正确的,但您不需要另外设置grouping:true和触发,reloadGrid因为groupingGroupBy您自动执行此操作.

该演示演示了动态设置或删除分组.

在此输入图像描述

所以你可以使用

$("#dynamicGrouping").change(function () {
    var groupingName = $(this).val();
    if (groupingName) {
        $('#grid').jqGrid('groupingGroupBy', groupingName);
    } else {
        $('#grid').jqGrid('groupingRemove');
    }
});
Run Code Online (Sandbox Code Playgroud)

或者更高级的版本

$("#dynamicGrouping").change(function () {
    var groupingName = $(this).val();
    if (groupingName) {
        $('#grid').jqGrid('groupingGroupBy', groupingName, {
            groupOrder : ['desc'],
            groupColumnShow: [false],
            groupCollapse: true
        });
    } else {
        $('#grid').jqGrid('groupingRemove');
    }
});
Run Code Online (Sandbox Code Playgroud)

更新:一切都适用于JSON数据:请参阅演示.

更新2:我再次查看代码,我发现gridviewtrue 在网格初始化时设置:查看.如果你没有 gridview: true并且最初使用grouping: false那么你将无法改变grouping: true.您还必须正确设置分组限制中的其他参数.

所以你必须自己遵守限制规则:

scroll: false,
rownumbers: false,
treeGrid: false,
gridview: true,
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我建议总是使用,gridview: true因为更好的性能.