在 ag-grid 中处理长时间排序(纯 JS)

Posted

技术标签:

【中文标题】在 ag-grid 中处理长时间排序(纯 JS)【英文标题】:Handle long time sorting in ag-grid (pure JS) 【发布时间】:2017-01-29 21:48:55 【问题描述】:

我正在处理大量数据(1M - 5M),并且网格中的行应该是可分组、可排序和可过滤的。由于 ag-grid 可以足够快地用数据填充表格,因此我使用内存行模型来满足要求。

但是,当我单击列以按此列对所有行进行排序时,执行此操作需要一些时间。此外,在行仍在排序时连续单击列可能会导致网格和浏览器应用程序崩溃。

是否有任何方法可以阻止用户点击列(禁用排序、显示加载覆盖或类似的东西)?

我正在尝试使用 beforeSortChanged 和 afterSortChanged 事件来显示覆盖或修改 DOM 元素(使网格有点灰色并显示加载圆圈),但它不能正常工作:beforeSortChanged 事件处理程序似乎被卡住了瞬间,然后才被执行。

Ag-grid 在 Ember 框架中作为组件使用。

【问题讨论】:

其实排序好像很快就完成了,但是ag-grid刷新了它的视图,迫使一个网页等待它 【参考方案1】:

如何使用onCellClicked,它是columnDefs 的一个属性。应该以与使用 beforeSortChanged 的​​方式相似的方式工作。

【讨论】:

感谢您的回复。我试过这种方式,但是当我点击列标题时它不会触发事件。 啊对,难怪我不能让它工作,哈哈。在这种情况下,您可以使用headerCellTemplate,然后在其中放置一个 onclick 事件,以便在单击标题时随时触发。我自己用它来自定义一个图标来切换固定。 它可以工作,但仍然是同样的问题:需要先等待排序完成,然后才执行处理程序。

以上是关于在 ag-grid 中处理长时间排序(纯 JS)的主要内容,如果未能解决你的问题,请参考以下文章

React 中的 Ag-grid 纯 JS 单元格渲染器

AG-Grid + React - 添加新行时忽略网格排序

对列标题上的多个列进行排序,单击 ag-grid

检测需要很长时间的 node.js http.get 调用

js中Array.sort()对纯数字排序错误

Spring + Hibernate+ HikariCP:如何在进行长时间运行的 REST 调用时处理数据库连接?