在Bootbox关闭时重新加载jQgrid

问题描述 投票:0回答:1

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

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

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

在同一页面上,我有一个打开Bootbox对话框的链接。从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);

......没有错误。

jqgrid free-jqgrid bootbox
1个回答
0
投票

我认为第一个是模态函数在jqGrid范围之外。例:

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

console.log($grid);

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

你可能想看看this article

© www.soinside.com 2019 - 2024. All rights reserved.