узнал сегодня на экспериментах; пейджинг (на стороне сервера) jqgrid очищает результат getChangedCells; Мне пришлось создать служебную функцию для хранения массива getChangedCells, чтобы он сохранялся во время подкачки;
Я делаю это, чтобы я мог представить все изменения отдельно
В опциях jqgrid у меня есть что-то вроде:
('#grid').jqgrid({
....
cellEdit:true,
cellSubmit:'clientArray',
colModel: [ {...,editable:true,
dataInit:function(el){
el.autocomplete({...});
}...} ... ],
afterSaveCell:function(){
$.retainChangesOnPaging();
}
....
});
и в утилите retainChangesOnPaging у меня что-то вроде:
(function(){
var retainedChanges;
retainedChanges = new Array();
$.retainChangesOnPaging = function(){
var changedCells = ('#grid').jqGrid('getChangedCells');
// loop over changedCells array, removing duplicates if you want to...
return retainedChanges.push(/* this is inside the loop; push current value to array*/);
....
}
$.getRetainedChanges = function(){
return retainedChanges;
}
})(jQuery);
затем, когда я готов отправить все изменения на сервер, я вызываю $ .getRetainedChanges
Другой вопрос: правильно ли я использовал retainChangesOnPaging? что-то кажется неправильным, хотя код работает - могу ли я сделать его лучше? мои закрытия в порядке?