请参阅位于此处的用户@Oleg对jqGrid本地编辑演示的略微修改版本:http://www.dataactive.net/local_editing.htm ...使用下方工具栏中的垃圾箱图标或顶部工具栏上的“删除”按钮删除一行后,Firebug中会出现以下错误: “NetworkError:404 Not Found - http://www.dataactive.net/clientArray”
@Oleg你能确定为什么会这样吗?
既然已经通过行删除解决了这个问题,我观察到的其他事情(请记住这是编辑“本地数据”),当新添加的行被删除时,它们似乎不会消失。考虑你的demo(@Oleg)中的myDelOptions代码,我试图在另一个脚本中用于生产目的:
myDelOptions = {
// because I use "local" data I don't want to send the changes
// to the server so I use "processing:true" setting and delete
// the row manually in onclickSubmit
onclickSubmit: function (options, rowid) {
var grid_id = $.jgrid.jqID(grid[0].id),
grid_p = grid[0].p,
newPage = grid_p.page;
// reset the value of processing option to true to
// skip the ajax request to 'clientArray'.
options.processing = true;
// delete the row
grid.delRowData(rowid);
$.jgrid.hideModal("#delmod" + grid_id,
{ gb: "#gbox_" + grid_id,
jqm: options.jqModal, onClose: options.onClose
});
$("#list")[0].refreshIndex();
setTimeout(function () {
$("#list").trigger("reloadGrid", [{ current: true}]);
}, 100);
calculateTotal();
if (grid_p.lastpage > 1) {// on the multipage grid reload the grid
if (grid_p.reccount === 0 && newPage === grid_p.lastpage) {
// if after deliting there are no rows on the current page
// which is the last page of the grid
newPage--; // go to the previous page
}
// reload grid to make the row from the next page visable.
grid.trigger("reloadGrid", [{ page: newPage}]);
}
return true;
},
processing: true
};
遍历行对象的calculateTotal()
函数,只需获取剩余行的列的数值,并将它们重新总计为摘要页脚行,但正在发生的是迭代行网格的对象显示“已删除的”行仍然存在,在数组或其他内容中,因此无法计算新的总数,因为似乎没有任何更改,实际上没有删除行。我不明白在本地数据的上下文中使用“delRowData”时实际发生了什么,但它似乎只是从可视网格中“删除”了行,但它仍然是行对象的一部分。而且,更奇怪的是,如果添加了另一个新行,则“已删除”行将重新显示为与新行完全相同的行。正如您所看到的,我有refreshIndex[0]
和trigger(reload)
,但如果trigger("reload")
存在且refreshIndex[0]
无效,则该行不会被删除。任何人都可以解决这个问题吗?需要额外的代码吗?
答案 0 :(得分:2)
你是对的。谢谢!该示例的技巧是将processing: true
设置为myDelOptions
的一部分。在第一次删除操作时,一切正常,但在第二次调用processing: false
方法的另一部分时,该值将重置为delGridRow
。
解决问题非常简单:只需添加额外的行
即可options.processing = true;
onclickSubmit
的{{1}}内。请参阅修改后的演示here。