0

我有一个要求,我们需要一次显示大约 24k 条记录,其中有 84 列,因为用户想要过滤整个数据集。

那么我们可以在没有延迟加载的情况下使用带有 ag-grid 的虚拟滚动机制吗?如果可以,请在这里。任何例子都非常欢迎参考。

4

1 回答 1

0

在尝试了具有相似行数和列数的此类事情后,我发现几乎不可能获得合理的性能,尤其是在使用“框架”渲染器之类的东西时。而且,如果您启用分组,您将度过一段糟糕的时光。

我的团队为跨整个大型数据集启用过滤和排序所做的工作包括:

  • 我们使用了客户端行模型——网格最简单的模式

  • 我们一次只加载一个“页面”数据。这涉及对合理的数据样本和您使用的实际功能进行反复试验,以达到最大页面大小,仍然允许网格在滚动/渲染方面表现良好。

  • 我们实现了自己的分页。这包括分页控件的显示,以及从服务器获取下一页/上一页。这显然需要服务器端的支持。从 ag-grid 的角度来看,它只管理一页数据。通过往返服务器,每个页面都被下一页完全替换。

  • 我们在服务器端实现了排序和过滤。当用户排序或过滤时,我们捕获事件,并将排序/过滤参数发送到服务器,并返回一个新页面。发生这种情况时,我们将返回到第 0 页(或用户用语中的第 1 页)。这很好地支持了我们在页面其他地方拥有的非网格过滤器(在我们的例子中,网格上方的工具栏)。

  • 我们仅在有单页数据时启用分组,并鼓励我们的用户过滤他们的数据以减少到一页数据,以便他们可以对其进行分组。根据数据,页面大小可能高达 1,000 行。同样,您必须根据具体情况确定页面大小。

因此,简而言之,当我们需要支持对大型数据集进行过滤/排序时,我们会在服务器端完成所有性能密集型工作。

我相信其他人会争辩说 ag-grid 有很多我建议你不要使用的高级功能。对于中小型数据集,它们是正确的,但是在处理大型数据集时,我发现 ag-grid 无法以合理的性能处理它。

于 2020-04-25T02:16:23.757 回答