我正在尝试在我的网站中实现jqGrid。当我加载一次时,一切正常,但是当我重新运行该功能以加载数据时,它不会更新。我做了什么是删除表,然后在我更新它之前再次添加它。这在Mozilla中有效,但是当我在IE中运行时它会崩溃。这是我的代码:
<div id="tabs-3">
<table id="userStatistics" style="width:100%">
</table><div id="pager1"></div>
</div>
这是添加网格的功能。
function generateSummaryStatistics(app, range) {
/*$("#gbox_userStatistics").remove();
$("#pager1").remove();*/
$("#tabs-3").html('<table id="userStatistics" style="width:100%"></table><div id="pager1"></div>');
$("#userStatistics").jqGrid({
url:"/WebServiceURL/GetLogMetricCountinputReportName="+app+"&startLogDate="+range,
datatype: 'xml',
mtype: 'GET',
colNames:['Date','User','Department','Application','Number Times Run'],
colModel: [{name:'logDate', index:'logDate',xmlmap:'logDate'},
{name:'reportUserName', index:'reportUserName',xmlmap:'reportUserName'},
{name:'departmentNumber', index:'departmentNumber',xmlmap:'departmentNumber'},
{name:'reportName', index:'reportName',xmlmap:'reportName'},
{name:'numOfQueries', index:'numOfQueries',xmlmap:'numOfQueries'}],
xmlReader: {
root:"returnList",
row:"UsageMetricsDTO",
repeatitems:false,
id : "departmentNumber"
},
rowNum:10,
rowList:[10, 20, 30, 40, 50],
shrinkToFit:false,
viewrecords: true,
loadonce: true,
caption: 'Summary Statistics',
pager: $('#pager1'),
autoWidth:true,
multiselect:false,
gridview: true,
emptyrecords: "No records Found"
}).navGrid('#pager1',{edit:false,add:false,del:false});
$('.ui-jqgrid-bdiv').css({height: 'auto', 'max-height': 250});
}
知道为什么会导致IE崩溃。
就像我说它在Mozilla中运行良好但是一旦它在IE中运行第二次就崩溃了。我没有在firebug中或在eclipse控制台中看到控制台中的任何错误。
任何人都可以帮助或建议更好的方法吗?
谢谢,
克雷格
答案 0 :(得分:2)
我不确定IE崩溃的原因,但你可以用其他方式做同样的工作,所有这些工作都应该没有任何问题。
首先要理解,jqGrid构造了一些额外的div over <table>
元素。 jqGrid提供特殊方法GridUnload来销毁旧网格并将初始<table>
放置在寻呼机<div>
上。所以你应该更好地使用
$("#userStatistics").jqGrid('GridUnload');
而不是$("#tabs-3").html(...);
。
在大多数情况下,只有在需要在同一个地方创建另一个网格时,才应该这样做。例如,在the answer和this one中,可以更改网格中的列数。所以人们使用这种方法。
在您的情况下,您需要做的只是用另一个数据重新加载网格体。在更有效的情况下,仅创建一次网格,并且所有下一次只更改url
并重新加载网格主体。由于您使用loadonce: true
,因此在第一次网格加载后将datatype
更改为'local'
。因此,除了重置datatype
之外,您还应将'xml'
重置为原始'url'
值。相应的代码将是
$("#userStatistics").jqGrid('setGridParam', {
url: newUrlValue,
datatype: 'xml'
}).trigger("reloadGrid", [{page: 1}]);