如何捕获jqGrid列更改事件?

时间:2011-01-04 08:46:53

标签: jqgrid

在我们的应用程序中,我们使用的是jqGrid,它支持列的隐藏和重新排序。当列被隐藏或重新排序时,我们希望将新设置存储到我们的数据库中。但要做到这一点,我们需要捕获隐藏或重新排序事件。或者可能在colModel更改时捕获。

有没有办法捕捉和处理这些事件?

感谢。

2 个答案:

答案 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。包含整数的数组permutationremapColumns函数中的含义相同(有关详细信息,请参阅我的old answer)。

答案 1 :(得分:1)

您可以通过上面Oleg的“更新”中的可分类参数捕获列更改,或者在jqGrid's message board上讨论。

但请注意,传递给回调的数组将与当前列顺序相关。换句话说,在移动多列之后保存数组将不会产生所需的结果。请参阅我对此other stackoverflow question的答案。