jqgrid - 动态启用分组 [英] jqgrid - dynamically enabling grouping
问题描述
我能够从 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屋!