2

我能够从 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');
        } 
    }
});

我的网格定义:

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 
            },
        .......
        .......
    });
});
4

1 回答 1

12

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

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

在此处输入图像描述

所以你可以使用

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

或更高级的版本

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

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

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

所以你必须自己保持规则不受限制:

scroll: false,
rownumbers: false,
treeGrid: false,
gridview: true,

顺便说一句,我建议始终使用gridview: true,因为性能更好。

于 2012-11-02T12:10:22.310 回答