在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 实现