【问题标题】:jqGrid onDelete event handlerjqGrid onDelete 事件处理程序
【发布时间】:2015-05-26 18:12:18
【问题描述】:

我正在使用带有datatype: 'local' 的jqGrid。网格的数据通过addRowData 动态设置。 我不使用诸如url + datatype: json 之类的异步ajax 东西,因为网格必须只显示客户端状态。

现在我想使用 jqGrid 删除行功能 (delbutton: true),它调用 delGridRow 函数。这可以很好地删除该行,但是我当然需要删除基础数据。由于所有这些只是客户端,我不能使用editurl

我想要的是 onRowDeleteonRowEdited 事件。但是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


    【解决方案1】:

    你写道你使用delbutton: true。所以我想你使用formatter: "actions"formatter: "actions" 在单击删除按钮时调用 delGridRow。我建议您使用afterCompleteafterSubmit 回调,其中第二个参数包含有关已删除行的信息(请参阅the documentation)。所以我建议你添加formatoptions: {delOptions: {...}},其中delOptions 包括afterCompleteafterSubmit 回调。如果您使用 afterSubmit 回调,则不要忘记返回 [true]。这种方式似乎更简单,因为您可以将 delGridRow 子类化。

    【讨论】:

    • 谢谢,当机立断。毕竟有回调:-)
    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    相关资源
    最近更新 更多