jqGrid onDelete 事件处理程序
jqGrid onDelete event handler
我正在使用带有 datatype: 'local'
的 jqGrid。网格数据正在通过 addRowData
动态设置。
我不使用异步 ajax 东西,例如 url
+ datatype: json
因为网格必须只显示客户端状态。
现在我想使用 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
}
});
现在,我的问题是:为什么这么复杂?我在这里错过了什么吗?这个解决方案是否可行,或者它可能会与未来版本中断?
您写道您使用 delbutton: true
。所以我想你使用 formatter: "actions"
。 formatter: "actions"
在单击删除按钮时调用 delGridRow
。我建议您使用 afterComplete
或 afterSubmit
回调,其中第二个参数包含有关已删除行的信息(请参阅 the documentation)。因此,我建议您添加 formatoptions: {delOptions: {...}}
,其中 delOptions
包括 afterComplete
或 afterSubmit
回调。如果您使用 afterSubmit
回调,您只应该不要忘记 return [true]
。这种方式看起来更简单,因为你所做的 delGridRow
的子类化。
我正在使用带有 datatype: 'local'
的 jqGrid。网格数据正在通过 addRowData
动态设置。
我不使用异步 ajax 东西,例如 url
+ datatype: json
因为网格必须只显示客户端状态。
现在我想使用 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
}
});
现在,我的问题是:为什么这么复杂?我在这里错过了什么吗?这个解决方案是否可行,或者它可能会与未来版本中断?
您写道您使用 delbutton: true
。所以我想你使用 formatter: "actions"
。 formatter: "actions"
在单击删除按钮时调用 delGridRow
。我建议您使用 afterComplete
或 afterSubmit
回调,其中第二个参数包含有关已删除行的信息(请参阅 the documentation)。因此,我建议您添加 formatoptions: {delOptions: {...}}
,其中 delOptions
包括 afterComplete
或 afterSubmit
回调。如果您使用 afterSubmit
回调,您只应该不要忘记 return [true]
。这种方式看起来更简单,因为你所做的 delGridRow
的子类化。