未捕获的异常:jqGrid - 没有这样的方法:GridUnload

时间:2015-08-31 17:29:00

标签: jqgrid

计划

我有一个带有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;
              }
          }

     });
}

非常感谢任何建议或帮助

2 个答案:

答案 0 :(得分:8)

您使用的Guriddo jqGrid JS与之前版本的jqGrid有些不兼容(有关详细信息,请参阅Guriddo jqGrid JS 4.8的the release notes)。 jqGrid的另一个分支 - free jqGrid没有GridUnload方法的问题。

如果您需要在Guriddo jqGrid JS中使用GridUnloadGridDestroy,则无法使用更多$("#jobGrid").jqGrid('GridUnload');。而不是你应该使用

$.jgrid.gridUnload("jobGrid"); // id of grid as parameter 

您的代码的另一个常见注释。您首先包括jquery.jqGrid.min.js,然后是grid.base.jsgrid.common.js等。这是不对的。 jquery.jqGrid.min.js包含最小化形式的所有模块。多次包含相同的模块是错误的。

答案 1 :(得分:1)

无论出于什么原因,Guriddo决定从新网格中删除$(“#gridid”)。jqGrid(“GridUnload”)。对我们来说,它创建了一个向上兼容性问题,特别是因为jQuery元素作为参数传递。我们选择在启动时使用以下代码将其重新放回。

if ($.fn.jqGrid["GridUnload"] === undefined) {
    $.fn.jqGrid["GridUnload"] = $.jgrid.gridUnload;
}