jqGrid不更新/崩溃

时间:2012-03-07 21:28:41

标签: jquery ajax jqgrid

我正在尝试在我的网站中实现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控制台中看到控制台中的任何错误。

任何人都可以帮助或建议更好的方法吗?

谢谢,

克雷格

1 个答案:

答案 0 :(得分:2)

我不确定IE崩溃的原因,但你可以用其他方式做同样的工作,所有这些工作都应该没有任何问题。

首先要理解,jqGrid构造了一些额外的div over <table>元素。 jqGrid提供特殊方法GridUnload来销毁旧网格并将初始<table>放置在寻呼机<div>上。所以你应该更好地使用

$("#userStatistics").jqGrid('GridUnload');

而不是$("#tabs-3").html(...);

在大多数情况下,只有在需要在同一个地方创建另一个网格时,才应该这样做。例如,在the answerthis one中,可以更改网格中的列数。所以人们使用这种方法。

在您的情况下,您需要做的只是用另一个数据重新加载网格体。在更有效的情况下,仅创建一次网格,并且所有下一次只更改url并重新加载网格主体。由于您使用loadonce: true,因此在第一次网格加载后将datatype更改为'local'。因此,除了重置datatype之外,您还应将'xml'重置为原始'url'值。相应的代码将是

$("#userStatistics").jqGrid('setGridParam', {
    url: newUrlValue,
    datatype: 'xml'
}).trigger("reloadGrid", [{page: 1}]);