在Bootbox关闭时重新加载jQgrid

时间:2019-02-27 13:53:45

标签: jqgrid free-jqgrid bootbox

我的页面上有jQGrid v4.6.0(我可以用Free jqGrid复制相同的问题),可以使用以下方法重新加载:

$('#jqGrid').trigger('reloadGrid');

它通过发布到服务器来加载数据。它可以正确发布,正确获取返回的数据,并在网格中显示正确的数据。

在同一页面上,我有一个链接,该链接可打开“启动箱”对话框。从Bootbox回调中调用reloadGrid似乎会使$('#jqGrid')。jqGrid“不是函数”

bootBoxWindow = bootbox.dialog({
    title: "title",
    message: "foo",
    size: "large",
    closeButton: false,

    buttons: {
        ok: {
            label: "Save 2",
            className: "btn-success",
            callback: function () {
                $('#jqGrid').trigger('reloadGrid');

            }
        }
    }
});

当此调用reloadGrid时,jqGrid会正确发布到我的服务器并检索最新数据。但是,在loadComplete事件内部,我不能再引用jQuery(“#jqGrid”)。jqGrid。

示例:

jQuery("#jqGrid").jqGrid('showCol', 3);

...在loadComplete内部调用此方法会出现错误:TypeError:jQuery(“#jqGrid”)。jqGrid不是函数“

使用$(this)而不是jQuery(“#jqGrid”)时,出现相同的错误。

没有Bootbox,我无法重现该问题。如果我加载网格,则使用此:

setTimeout(function () {
    $('#jqGrid').trigger('reloadGrid', [{ current: true }]);
}, 10000);

...没有错误。

1 个答案:

答案 0 :(得分:0)

我首先想到的是模态函数不在jqGrid范围内。 示例:

(function($) { 
    $(function() {
        ....
        var $grid = $("#grid").jqGrid({...});
        .....
        console.log($grid);
    });
})(jQuery);

console.log($grid);

第一个console.log将输出网格对象,第二个将抛出错误。

您可能想看看this article