2009-12-21 47 views
1

我正在寻找jqgrid的建议以从本地源添加大型数据集。现在,有一个简单的循环:jqgrid具有大型本地数据集

grid.clearGridData(); 
for(var i = 0; i < data.length; i++) 
{ 
    grid.addRowData(i+1, data[i]); 
} 
grid.trigger(”reloadGrid”); 

而且一些更大的数据集,这将导致显示“JavaScript是使用了过多的资源...退出/继续”在IE和FF消息浏览器,通常经过数“继续”一切都很好。这是用于〜2000行的数据集。

我可以用setTimeout将它分成几个块,但感觉很糟糕。

使用jqgrid的3.3版本。

回答

1

我的第一个想法是,2000行是通常是对于单个页面来说太多了;用户将无法处理那么多的信息。如果他们由于某种原因一次性需要它,那么可能值得导出为CSV,因为这样做通常可以更轻松地完成2000行数据(例如任意统计数据)所要执行的操作。

我的下一个想法是,如果你仍然需要这样做,你可以尝试升级到最新版本的jqGrid(目前是3.6.1),希望他们已经优化了这条路径。

另一个想法:如果您使用JSON,您是否尝试过配置jqGrid让浏览器的本地解析句柄解析JSON?它在页面的一点点处记录了here

一般来说,setTimeout组装机是如果你真的需要它来解决这样的事情的方式,但大多数时候,你最好退后一步,寻找不同的解决方案,以任何问题,你'正在解决。

+0

我也这么认为。这是一个更大的应用程序的边缘情况,它必须以某种方式妥善处理 - 我不能切换这种情况下的齿轮。感谢JSON的建议。我必须进行调查,并且必须将发生在数据上的某些预处理移动到其他地方。 –

+0

希望它能解决问题 - 我讨厌随机边缘案例占用了大部分开发时间,但似乎发生了相当的一点。 –

+1

经过4个小时的工作,我真的厌倦了jqgrid,并可能完全放弃它。我是.3修订版本,升级根本不起作用:用户界面很糟糕,最终.addJSONdata“不是功能”错误会让我受到伤害。从本地数据到JavaScript对象数据不是特别容易,而且记录非常糟糕。 –

1

它的晚期(2012年),但它仍然可能有用。 使用:

$("#gridID").setGridParam({ data: JSONData }); 
$("#gridID").trigger("reloadGrid"); 

比addRowData循环更高效。