在我们的应用程序中,我们使用的是jqGrid,它支持列的隐藏和重新排序。当列被隐藏或重新排序时,我们希望将新设置存储到我们的数据库中。但要做到这一点,我们需要捕获隐藏或重新排序事件。或者可能在colModel更改时捕获。
有没有办法捕捉和处理这些事件?
感谢。
答案 0 :(得分:4)
您可以使用columnChooser的“完成”事件。这是一个例子:
var grid = $("list");
grid.navButtonAdd(
'#pager',
{caption:"", buttonicon:"ui-icon-calculator", title:"Column choose",
onClickButton: function() {
grid.jqGrid('columnChooser',
{
"done": function(perm) {
if (perm) {
this.jqGrid("remapColumns", perm, true);
}
// here you can do some additional actions
}
});
}
});
更新:如果您将sortable
选项定义为
sortable: {
update: function (permutation) {
alert("sortable.update");
}
}
而不是sortable:true
您将收到有关新订单列的通知。有关详细信息,请参阅jqGrid的the source code。包含整数的数组permutation
与remapColumns
函数中的含义相同(有关详细信息,请参阅我的old answer)。
答案 1 :(得分:1)
您可以通过上面Oleg的“更新”中的可分类参数捕获列更改,或者在jqGrid's message board上讨论。
但请注意,传递给回调的数组将与当前列顺序相关。换句话说,在移动多列之后保存数组将不会产生所需的结果。请参阅我对此other stackoverflow question的答案。