Events jqGrid onDelete事件处理程序
我正在使用数据类型为“local”的jqGrid。网格的数据通过Events jqGrid onDelete事件处理程序,events,jqgrid,handler,extend,Events,Jqgrid,Handler,Extend,我正在使用数据类型为“local”的jqGrid。网格的数据通过addRowData动态设置。 我不使用异步ajax,比如url+datatype:json,因为网格必须只显示客户端状态 现在我想使用jqGrid删除行功能(delbutton:true),它调用delGridRow函数。这很好地删除了行,但是我当然需要删除底层数据。因为所有这些都只是客户端,所以我不能使用editurl 我想要的是一个onRowDelete或onrowdedited事件。但是jqGrid不支持这样的东西,或者至少
addRowData
动态设置。
我不使用异步ajax,比如url
+datatype:json
,因为网格必须只显示客户端状态
现在我想使用jqGrid删除行功能(delbutton:true
),它调用delGridRow
函数。这很好地删除了行,但是我当然需要删除底层数据。因为所有这些都只是客户端,所以我不能使用editurl
我想要的是一个onRowDelete
或onrowdedited
事件。但是jqGrid不支持这样的东西,或者至少我还没有发现这样的东西。实现我自己的删除按钮是可以的,但我只是通过工具栏实现了这一点,这不是我想要的
经过多次修改,我想出了以下解决方案,将我自己的事件处理程序添加到jqGrid中:
var originalDelFunc = $.fn.jqGrid.delGridRow;
$.fn.jqGrid.delGridRow = function (rowids, oMuligrid) {
var onPreDeleteRowEventHandler = this.getGridParam('onPreDeleteRow'),
consumeFlag = false;
if (typeof onPreDeleteRowEventHandler === 'function') {
consumeFlag = !!onPreDeleteRowEventHandler(rowids, oMuligrid);
}
if (!consumeFlag) {
originalDelFunc.call(this, rowids, oMuligrid);
}
};
用法:
grid.jqGrid(
'setGridParam',
{
onPreDeleteRow: function(rowids, oMuligrid) {
// remove client data here
}
});
现在,我的问题是:为什么这么复杂?我是不是遗漏了什么?这个解决方案是可行的,还是很可能会与未来的版本决裂?您在文章中写道您使用了
delbutton:true
。因此,我假设您使用格式化程序:“操作”
。格式化程序:“操作”
在单击删除按钮时调用delGridRow
。我建议您使用afterComplete
或afterSubmit
回调,第二个参数包含有关已删除行的信息(请参阅)。因此我建议您添加formatoptions:{delOptions:{…}}
其中delOptions
包括afterComplete
或afterSubmit
回调。只有在使用afterSubmit
callback时,才不要忘记返回[true]
。这种方法似乎更简单,因为您可以对delGridRow
进行子类化。谢谢,请注意。毕竟有一个回调:-)