【发布时间】:2015-05-26 18:12:18
【问题描述】:
我正在使用带有datatype: 'local' 的jqGrid。网格的数据通过addRowData 动态设置。
我不使用诸如url + datatype: json 之类的异步ajax 东西,因为网格必须只显示客户端状态。
现在我想使用 jqGrid 删除行功能 (delbutton: true),它调用 delGridRow 函数。这可以很好地删除该行,但是我当然需要删除基础数据。由于所有这些只是客户端,我不能使用editurl。
我想要的是 onRowDelete 或 onRowEdited 事件。但是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
}
});
现在,我的问题是:为什么这么复杂?我在这里错过了什么吗?这个解决方案是否可行,或者它可能会与未来的版本中断?
【问题讨论】:
标签: events jqgrid handler extend