我能够从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
},
.......
.......
});
});
答案 0 :(得分:12)
我认为你在代码中犯了一些错误。您发布的代码似乎是正确的,但您不需要另外设置grouping:true
并触发reloadGrid
,因为groupingGroupBy
会自动执行此操作。
The demo演示了动态设置或删除分组。
所以你可以使用
$("#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数据:请参阅the demo。
更新2 :我再次查看代码,发现gridview
会在网格初始化时设置为true
:见the lines。如果您没有gridview: true
并且最初使用grouping: false
,那么您将无法仅更改grouping: true
。您还必须正确设置the grouping limitations中的其他参数。
所以你必须自己遵守限制规则:
scroll: false,
rownumbers: false,
treeGrid: false,
gridview: true,
顺便提一下,我建议始终使用gridview: true
,因为效果会更好。