Каково влияние подкачки на метод getChangedCells в jqgrid при использовании clientArray (clientide) для редактирования? - PullRequest
0 голосов
/ 13 ноября 2011

Я использую jqgrid с опцией clientArray для редактирования; Моя сетка использует пейджинг; Будет ли метод jqgrid getChangedCells возвращать правильные измененные строки даже после нескольких смен страниц с возможностью изменения данных с сервера? Например, если с сервера будут доступны новые строки, которые теперь появятся в моей сетке, если я вернусь назад; Не возникнет ли конфликт строк - новые идентификаторы строк будут указывать на строки, отличные от тех, которые были до того, как новые данные стали доступны? Наверное, я всегда мог упорядочить данные своего сервера по автоинкрементному первичному ключу? ..

1 Ответ

0 голосов
/ 05 января 2012

узнал сегодня на экспериментах; пейджинг (на стороне сервера) 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? что-то кажется неправильным, хотя код работает - могу ли я сделать его лучше? мои закрытия в порядке?

...