【发布时间】:2023-03-29 10:59:01
【问题描述】:
我有一个网格,其中包含大量但合理的数据(大约 12,000 个单元格...... 340 列和 34 行)。我知道这看起来像是一张横向表格,但对于我们的应用程序来说,它更有可能有大量的列和更少的行。
当数据大约有 2300 个单元格(68 列和 34 行)时,它足够快,我可以称之为“立即”。没什么好担心的。
将其增加 5 倍会导致初始渲染时间呈指数增长。具体来说,在 recursivelyCreateColumns 方法中创建列需要很长时间。
转到 10 倍会导致需要几分钟才能完成。到 20 时,它没有崩溃,但 5 分钟后它仍在运行,我怀疑它需要一个小时或更长时间。
我的问题是,即使我为 AG-Grid 创建网格列/行/数据以处理的代码在 20 毫秒范围内运行,我可以做些什么来让 AG-Grid 更轻松地创建列?也许它只在必要时创建列?
我的网格设置如下:
var gridOptions = {
enableCellExpressions: true,
columnDefs: data.header,
rowData: data.body.data,
floatingTopRowData: data.body.floatingTopData,
rowHeight: 25,
headerHeight: 25,
enableColResize: true,
enableSorting: true,
enableFilter: true,
getNodeChildDetails: function(rowItem) {
if(rowItem.items) {
return {
expanded: scope.gridOptions.rowData[0].something === rowItem.something,
group: true,
field: "something",
key: rowItem.something,
children: rowItem.items
};
}
return null;
}
};
【问题讨论】:
-
您使用的是什么版本的 ag-Grid?从您的配置中,您应该启用列虚拟化,这意味着唯一呈现的列是可见的列。你所说的卷在这里应该不是问题
-
版本 6.1.0。特别是缩小版。我将它插入 Angular 1.4.7(无法升级 Angular),但我的测试表明它似乎只与 AG-Grid 相关,所以我不太担心 Angular 部分。
-
另外,如果重要的话,每列都是一个 5 层组。含义
column = {headerName: "something", children: [{headerName: "something2", children: [{headerName: "something3".... -
如果我将其设为单层列(无列分组),那么即使我将数据增加 50 倍(3303 列!),它也几乎是即时的。问题是,我绝对需要这种分层。以前使用单独的头表作为从属的实验并不能解决其他问题。
-
你有我可以看一看的plunker吗?我可以看一下,看看我是否能找出问题所在。我相信我们可以找出这里发生的事情并为您解决它
标签: javascript performance ag-grid