【问题标题】:Memory jumping with jqGrid refresh内存跳跃与 jqGrid 刷新
【发布时间】:2013-10-04 13:50:39
【问题描述】:

我有一个从本地数据填充的 jqGrid (v4.5.2)。每当我尝试使用下面的buildGrid() 函数卸载网格并用新数据重新填充它时,IE8 中的内存就会跳跃。这样做大约 15 倍后,内存从 ~80,000K 增加到 ~350,000K。我的用例要求此网格在不刷新浏览器的情况下刷新 > 150 倍。

这是一个非常简单的网格。这是我构建它的功能:

<table id="lpInfoGrid"><tr><td/></tr></table>
<div id="lpInfoGridPager"></div>

var jqGridObj;
function buildGrid(lot) {

    if (jqGridObj) {
        jqGridObj.jqGrid('GridUnload');
        jqGridObj = null;       
    }

    jqGridObj = $("#lpInfoGrid").jqGrid({
        data: localData[lot].Info,
        datatype: "local",
        colNames: [...],
        colModel: [...],
        viewrecords: true,
        gridview: true,
        pager: '#lpInfoGridPager'   
    });

}

我尝试清除和刷新网格的方式有问题吗?

【问题讨论】:

  • 嗯...您的网格中有多少行?有点抓稻草,但它们是否以某种方式与页面的其余部分联系在一起,以防止它们被正确地收集起来?
  • 只有1-2K条记录。它们是localData[lot] 中的对象集合。基本上,我的用户滚动浏览这些对象,当他们找到一个新对象时,我会刷新网格。如果我注释掉网格,内存就会保持不变。

标签: javascript jquery jqgrid internet-explorer-8


【解决方案1】:

使用reloadGrid 函数我的运气似乎更好。由于其他参数相同:

var jqGridObj = null;
function buildGrid(lot) {

    if (jqGridObj != null) {
        $('#lpInfoGrid').setGridParam({
            data: localData[lot].Info,
            datatype: 'local'            
        }).trigger('reloadGrid');
        return true;
    }

    jqGridObj = $('#lpInfoGrid').jqGrid({
        data: localData[lot].Info,
        datatype: 'local',
        colNames: [...],
        colModel: [...],
        viewrecords: true,        
        gridview: true,
        pager: '#lpInfoGridPager'
    });

}

这有助于控制内存。我会看看我是否在下游遇到任何其他问题。

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多