jqgrid 5.2.1 设置colMenu 怎么实现记忆功能
时间: 2024-03-26 15:34:14 浏览: 92
在 jqGrid 5.2.1 中,`colMenu` 已经被废弃,取而代之的是 `columnChooser`。因此,这里提供的是如何在 jqGrid 5.2.1 中实现 `columnChooser` 的记忆功能。
实现 `columnChooser` 的记忆功能,可以参考以下步骤:
1. 在 `columnChooser` 中,使用 `done` 事件来获取当前的列状态,并将其存储在 Cookie 中。
2. 在 jqGrid 的 `loadComplete` 事件中,根据 Cookie 中存储的状态,重新设置列的隐藏/显示状态。
以下是一个示例代码片段,展示如何在 jqGrid 5.2.1 中实现 `columnChooser` 的记忆功能:
```javascript
// 定义colModel数组
var colModel = [
{ name: 'id', hidden: true },
{ name: 'name', width: 100 },
{ name: 'age', width: 50 },
{ name: 'address', width: 150 }
];
// 定义colNames数组
var colNames = ['ID', '姓名', '年龄', '地址'];
// 设置jqGrid
$('#grid').jqGrid({
url: 'data.json',
colModel: colModel,
colNames: colNames,
// 使用columnChooser
colMenu: false,
columnChooser: true,
// 绑定columnChooser的done事件
done: function() {
var cookieName = 'gridColStates';
var hiddenCols = [];
// 获取当前列的隐藏状态
$(this).jqGrid('getGridParam', 'colModel').forEach(function(col) {
if (col.hidden) {
hiddenCols.push(col.name);
}
});
// 将隐藏状态存储在Cookie中
$.cookie(cookieName, hiddenCols.join(','), { expires: 7 });
},
loadComplete: function() {
// 从Cookie中获取列的隐藏状态
var cookieName = 'gridColStates';
var hiddenCols = $.cookie(cookieName) ? $.cookie(cookieName).split(',') : [];
// 遍历列模型,设置每列的隐藏状态
for (var i = 0, len = colModel.length; i < len; i++) {
var colName = colModel[i].name;
if ($.inArray(colName, hiddenCols) > -1) {
$(this).jqGrid('hideCol', colName);
} else {
$(this).jqGrid('showCol', colName);
}
}
}
});
```
在上述示例中,我们定义了一个名为 `gridColStates` 的 Cookie,用于存储列的隐藏状态。在 `columnChooser` 的 `done` 事件中,我们获取当前的列状态,并将其存储在 Cookie 中。在 `loadComplete` 事件中,我们从 Cookie 中获取隐藏状态,并根据需要隐藏或显示每一列。
阅读全文