jqgrid - 动态启用分组 [英] jqgrid - dynamically enabling grouping

查看:11
本文介绍了jqgrid - 动态启用分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我能够从 jqgrid 演示页面中的示例中实现分组功能.但我不想默认启用分组,但在更改选择列表时我想启用分组功能.我尝试了几个选项,但没有一个成功?有人可以在这里帮助我吗,可能是我遗漏了一些东西.这是我的代码...

$("#dynamicGrouping").change(function() {var 值 = $(this).val();如果(值){如果(值 == ''){$('#grid').jqGrid('groupingRemove', true);} 别的 {$('#grid').jqGrid('setGridParam', { grouping:true });$('#grid').jqGrid('groupingGroupBy', value);$('#grid').trigger('reloadGrid');}}});

我的网格定义:

jQuery(function() {$('#grid').jqGrid({............分组:假,分组视图:{groupField : ['field_name'],groupColumnShow:[真],groupText : ['<b>{0} - {1} 个项目</b>'],组折叠:假,groupOrder: ['asc'],groupDataSorted : 真},……………………});});

解决方案

我以为你在代码中犯了一些错误.您发布的代码似乎我是正确的,但您不需要设置 grouping:true 并另外触发 reloadGrid 因为 groupingGroupBy 这样做你自动.

.

UPDATED 2:我又查看了一次代码,发现 gridview 将设置为 true 网格初始化:见.如果您没有 gridview: true 并且最初使用 grouping: false 那么您将无法仅更改 grouping: true.您还必须从 分组限制中设置其他参数正确.

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

scroll: false,行号:假,树网格:假,网格视图:是的,

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

I was able to implement grouping feature from examples in the jqgrid demo page. But I don't want to enable grouping by default but on the change of a select list I would like to enable the grouping feature. I have tried several options but none of them were successful? Could some one please help me here, may be I am missing something. Here is my code...

$("#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');
        } 
    }
});

My grid definition:

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

解决方案

I supposed that you made some error in the code. The code which you posted seem me correct, but you don't need to set grouping:true and trigger reloadGrid additionally because groupingGroupBy do this you automatically.

The demo demonstrates setting or removing of grouping dynamically.

So you can use

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

or a little more advanced version

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

UPDATED: Everything works with JSON data too: see the demo.

UPDATED 2: I looked in the code one more time and I found out that gridview will set to true at the initialization of grid: see the lines. If you don't have gridview: true and use initially grouping: false then you will be not able to change just grouping: true. You have to set also other parameters from the grouping limitations correctly.

So you have to hold the rules from limitations yourself:

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

By the way I recommend always use gridview: true because of better performance.

这篇关于jqgrid - 动态启用分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆