jqgrid - jqGrid:何时对列进行重新排序有事件?

标签 jqgrid

我在jqGrid中使用列重新排序功能

$grid = jQuery("#list").jqGrid({
    sortable:true,
    ...
});

重新排列列后是否会触发事件?如果有,我看不到!

提前致谢

最佳答案

jqGrid message board所述,在update()的grid.jqueryui.js(jqGrid v3.8.2)中有一个对ts.p.sortable.update()的调用。

jQuery('#gridId').jqGrid({
    ...,
    sortable: { update: function(permutation) {
        alert('save permutation somewhere');
    },
    ...
});

但是,请注意,传递给您的回调的数组将相对于当前列顺序。换句话说,在移动多列之后按原样保存数组将不会产生所需的结果。

我不得不做这样的事情:
var defaultColNames = [ 'Alpha', 'Beta', 'Gamma' ];
var defaultColModel = [
    { name: 'alpha', index: 'alpha' },
    { name: 'beta', index: 'beta' },
    { name: 'gamma', index: 'gamma' }
];

jQuery('#gridId').jqGrid({
    ...,
    colNames: defaultColNames,
    colModel: defaultColModel,
    sortable: { update: function(relativeColumnOrder) {
        var grid = jQuery('#gridId');

        var defaultColIndicies = [];
        for( var i=0; i<defaultColModel.length; i++ ) {
            defaultColIndicies.push(defaultColModel[i].name);
        }

        if( grid.getGridParam('treeGrid') ) {
            // tree grid mode adds 5 extra columns
            defaultColIndicies = defaultColIndicies.concat(['level','parent','isLeaf','expanded','loaded']);
        }

        var columnOrder = [];
        var currentColModel = grid.getGridParam('colModel');
        for( var j=0; j<relativeColumnOrder.length; j++ ) {
            columnOrder.push(defaultColIndicies.indexOf(currentColModel[j].name));
        }

        // columnOrder now contains exactly what's necessary to pass to to remapColumns
        // now save columnOrder somewhere
        globalColumnOrder = columnOrder;
    },
    ...
});

// grab saved column order from cookie or something
var globalColumnOrder = [0,1,2];

// append to array if tree grid enabled
if( jQuery('#gridId').getGridParam('treeGrid') ) {
    // tree grid mode adds 5 extra columns
    for( var k=defaultColNames.length; k<(defaultColNames.length+5); k++ ) {
        globalColumnOrder.push(k);
    }
}

// restore column order
jQuery('#gridId').jqGrid('remapColumns', globalColumnOrder, true, false);

关于jqgrid - jqGrid:何时对列进行重新排序有事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762608/

相关文章:

jquery - JqG​​rid:设置 "No Rows Selected"对话框的位置

jquery - 在jqGrid中,可以双击一行来弹出编辑表单吗?

jquery - 在 jqGrid 中更改 rownumber 值的 CSS

php - jqgrid 从一个网格更新两个表

javascript - 使用 25,000 行加载 jqGrid 时出现问题

javascript - 将新行添加到 jqGrid 控件后如何运行 JavaScript 函数?

javascript - 如果未编辑行,如何禁用免费 jqgrid 中的保存和取消工具栏按钮

jquery - 将标题栏文本放在 jqGrid 中居中,同时保持打开/关闭按钮的位置?

jquery - 是否可以自定义 jqgrid 的外观和感觉?

asp.net-mvc-2 - Jqgrid中通过URL将变量传递给mvc中的 Controller