在Bootbox关闭时重新加载jQgrid

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Bootbox关闭时重新加载jQgrid相关的知识,希望对你有一定的参考价值。

我的页面上有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范围之外。例:

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

console.log($grid);

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

你可能想看看this article

以上是关于在Bootbox关闭时重新加载jQgrid的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net MVC 代码片段问题中的 Jqgrid 实现

重新加载后带有特殊字符的jqGrid过滤器问题

重新加载时刷新片段

无法使用新的json数据重新加载JQGrid

关闭使用afterSubmit函数添加/编辑jqgrid的表单

jquery.jqgrid 重新加载表格数据