C'è una chiamata in grid.jqueryui.js (jqGrid v3.8.2) nell'aggiornamento() per ts.p.sortable.update() come discusso in jqGrid message board, quindi:
jQuery('#gridId').jqGrid({
...,
sortable: { update: function(permutation) {
alert('save permutation somewhere');
},
...
});
Tuttavia , si noti che l'array passato alla richiamata sarà relativo all'ordine di colonne corrente. In altre parole, il salvataggio dell'array come è dopo lo spostamento di più colonne non produrrà i risultati desiderati.
che dovevo fare qualcosa di simile:
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);
Grazie ... ho pensato che sembrava promettente anche. Tuttavia non riesco ancora a capire come posso impostare un gestore per questo evento. Ho provato ad aggiungere l'aggiornamento : function (event, ui) {alert (""); } quando si inizializza la griglia e anche $ ("elenco #").bind ("sortupdate", function() {alert ("");}); dopo l'inizializzazione della griglia. Ma nessuno dei due lavora per me ... qualche suggerimento? – Adam