我的页面上有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);
...没有错误。
答案 0 :(得分:0)
我首先想到的是模态函数不在jqGrid范围内。 示例:
(function($) {
$(function() {
....
var $grid = $("#grid").jqGrid({...});
.....
console.log($grid);
});
})(jQuery);
console.log($grid);
第一个console.log将输出网格对象,第二个将抛出错误。
您可能想看看this article