jqgrid信息对话框函数onClose

时间:2014-02-05 20:52:00

标签: jqgrid

我正在使用info_dialog显示服务器错误消息。 当info_dialog被关闭时,我想触发一个函数。我试图用鼠标点击它,但它只在对话框已经关闭后触发

第一次鼠标点击:对话框关闭,但不会触发警报

第二次以及随后的每次鼠标点击:警告被触发。

我正在使用celledit。 任何人都知道如何在对话框关闭时触发一个功能? 谢谢你的帮助。

errorCell:  function(serverresponse, status) {

    $.jgrid.info_dialog(
    $.jgrid.errors.errcap,
    serverresponse.responseText,
    $.jgrid.edit.bClose,
    { zIndex: 1500}
    );


    $(document).click(function() {
    alert( "Handler for .click() called." );
    });
}

1 个答案:

答案 0 :(得分:0)

方法$.jgrid.info_dialog支持onClose回调,将在结束时调用。回调的返回值通知是否允许结束。试试代码

$.jgrid.info_dialog(
    $.jgrid.errors.errcap,
    serverresponse.responseText,
    $.jgrid.edit.bClose,
    {
        zIndex: 1500,
        onClose: function () {
            alert("inside onClose");
            return true; // allow closing
        }
    }
);

更新:要在对话框中点击鼠标 时抓住$.jgrid.info_dialog的关闭,必须执行更复杂的操作。

var orgViewModal = $.jgrid.viewModal;
$.extend($.jgrid,{
    viewModal: function (selector, options) {
        if (options.onHide) {
            options.orgOnHide = options.onHide;
            options.onHide = function (h) {
                alert("inside onHide");
                return options.orgOnHide.call(this, h);
            }
        }
        return orgViewModal.call (this, selector, options);
    }
});

$.jgrid.info_dialog($.jgrid.errors.errcap, "Test message",$.jgrid.edit.bClose, {
    zIndex: 1500,
    onClose: function () {
        alert("inside onClose");
        return true; // allow closing
    }
});

在代码的第一部分中,我使用$.jgrid.viewModal方法的“子类化”(就像我在the answerthis one和其他一些方法中使用的那样)。所以我将所有调用转发给原始$.jgrid.viewModal方法,但有一个例外。如果使用$.jgrid.viewModal回调参数调用onHide方法,则转发到原始$.jgrid.viewModal方法修改后的回调实现。它允许关闭对话框。

更新2 The demo显示实时方法。

或者(而不是子类化),您只需修改the lines

即可
onHide: function(h) {
    h.w.hide().remove();
    if(h.o) { h.o.remove(); }
},
info_dialogjquery.jqGrid.src.js

。如果定义了选项,则只需插入mopt.onClose的附加调用。可能应该包含其他回调onClosed,因为onClose可以拒绝关闭,但onHide内部调用的新回调无法执行此操作。