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