计划
我有一个带有jqGrid的页面 - 这个网格应该能够加载三个相同类型的json有效负载之一 - 只是不同的过滤器。加载的数据基于单击按钮(在计划,批准,已完成中)。
问题
我遇到的问题是当我引用 $(“#jobGrid”)时.jqGrid('GridUnload'); 我得到一个“未捕获的异常:jqGrid - 没有这样的方法:GridUnload”。
代码
加载了以下库 - 基本上我抓住它们试图获取 $(“#jobGrid”)。jqGrid('GridUnload'); 开火
<!-- jqGrid Resources-->
<script type="text/ecmascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/js/i18n/grid.locale-en.js"></script>
<script type="text/ecmascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/src/grid.base.js"></script>
<script type="text/javascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/src/grid.common.js"></script>
<script type="text/javascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/src/grid.formedit.js"></script>
<script type="text/javascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/src/jquery.fmatter.js"></script>
<script type="text/javascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/src/grid.jqueryui.js"></script>
<script type="text/javascript" src="http://cdn.cov.com/jqGrid_JS_5.0.0/plugins/grid.addons.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="http://cdn.cov.com/jqGrid_JS_5.0.0/css/ui.jqgrid-bootstrap.css" />
发生异常的JavaScript函数。注意:触发此方法时,网格中已存在数据
// Approved Filter
var approvedFilter = function () {
// Ready Up Defaults
$.jgrid.defaults.width = $("#jobGridContainer").width();
$.jgrid.defaults.responsive = true;
// Reset Data (Grid has data in it already
$("#jobGrid").jqGrid('GridUnload');
$("#jobGrid").jqGrid({
url: RestService.GetApprovedJobsService(),
mtype: "GET",
styleUI: 'Bootstrap',
datatype: "json",
colModel: [
{ label: 'JobNumber', name: 'JobNumber', key: true, width: 75 },
{ label: 'Job Name', name: 'JobName', width: 150 },
{ label: 'Request State', name: 'JobState', width: 150 },
{ label: 'Status', name: 'JobStatus', width: 150 },
{ label: 'Request By', name: 'JobRequestor', width: 150 },
{ label: 'Last Modified', name: 'LastModifiedDate' }
],
viewrecords: true,
height: 375,
rowNum: 10,
loadonce: true,
pager: "#jqGridPager",
caption: "Showing Approved Requests. Click row to view details",
onSelectRow: function (rowid, selected) {
if (rowid != null) {
document.location.href = getAppRootUrl() + "/Service/Job/" + rowid;
}
}
});
}
非常感谢任何建议或帮助
答案 0 :(得分:8)
您使用的Guriddo jqGrid JS与之前版本的jqGrid有些不兼容(有关详细信息,请参阅Guriddo jqGrid JS 4.8的the release notes)。 jqGrid的另一个分支 - free jqGrid没有GridUnload
方法的问题。
如果您需要在Guriddo jqGrid JS中使用GridUnload
或GridDestroy
,则无法使用更多$("#jobGrid").jqGrid('GridUnload');
。而不是你应该使用
$.jgrid.gridUnload("jobGrid"); // id of grid as parameter
您的代码的另一个常见注释。您首先包括jquery.jqGrid.min.js
,然后是grid.base.js
,grid.common.js
等。这是不对的。 jquery.jqGrid.min.js
包含最小化形式的所有模块。多次包含相同的模块是错误的。
答案 1 :(得分:1)
无论出于什么原因,Guriddo决定从新网格中删除$(“#gridid”)。jqGrid(“GridUnload”)。对我们来说,它创建了一个向上兼容性问题,特别是因为jQuery元素作为参数传递。我们选择在启动时使用以下代码将其重新放回。
if ($.fn.jqGrid["GridUnload"] === undefined) {
$.fn.jqGrid["GridUnload"] = $.jgrid.gridUnload;
}