使用clientArray(clientside)进行编辑时,分页对jqgrid的getChangedCells方法有什么影响?

时间:2011-11-13 18:20:53

标签: jquery jqgrid pagination

我正在使用带有clientArray选项的jqgrid进行编辑;我的网格正在使用分页; jqgrid getChangedCells方法是否会返回正确更改的行,即使多次更改页面并且服务器中的数据可能已更改? - 例如,如果新的行可用,如果我回页,现在将出现在我的网格中; 不会有rowId冲突 - 新的rowIds将指向与新数据可用之前的行不同的行? 我想我总是可以通过自动增量主键来订购我的服务器数据吗?..

2 个答案:

答案 0 :(得分:0)

今天发现了实验; paging(服务器端)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的方式是正确的吗?虽然代码有效,但似乎有些错误 - 我能以任何方式改进它吗?我的关闭好吗?

答案 1 :(得分:0)

我认为,当您存储是否已存在同一行时,最好改写ReservedChanges中的现有行,因为用户可能会一次又一次地覆盖现有行。