我在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/