首页 > 解决方案 > ag-grid:“如何滚动到最后一个已知位置”?

问题描述

Ag-Grid 提供了该方法ensureIndexVisible(index, 'middle');使用该方法可以轻松滚动到选定的索引。但是如何从用户那里获得滚动位置的最后一个已知索引?

一个例子:我们有一个有 600 行的表。用户正在滚动 - 发生更新。桌子有点变化。现在我有表格滚动到顶部的行为。用户现在必须再次滚动到他的最后一个位置。

我想将用户重定向到 hist last 滚动位置:ensureIndexVidisble(USERS_LAST_KNOWN_SCROLLING_POSITION, 'middle');

除了信息:用户不在表中工作。所以我无法保存他对一行的最后一次点击。

我怎样才能做到这一点?

标签: reactjsag-gridag-grid-react

解决方案


以典型的 AG 方式,他们将这一重要信息隐藏在他们的文档中:

方法 3 - 增量行数据 增量方法使用上面的行数据方法,但具有属性 deltaRowDataMode=true。

当 deltaRowDataMode 开启时,网格会将新行数据与当前行数据进行比较,并为您创建一个事务对象。然后网格将更改作为更新事务执行,保留所有网格选择、过滤器等。

如果您想管理网格之外的数据(例如在 Redux 存储中),请使用此选项,然后让网格计算出需要进行哪些更改才能使网格的数据版本保持最新。

https://www.ag-grid.com/javascript-grid-data-update/#bulk-updating

如果您的行具有唯一 ID,我认为这应该是您始终使用的设置(我希望他们这样做,这是一种很好的做法)。设置deltaRowDataMode为 true 并用于getRowNodeId指定行的唯一 ID。

之后,您的网格将更有效地更新(仅更新需要的内容)并且它不会跳到顶部,因为它不会在更新时重新创建网格中的每一行和单元格。

为了更好地衡量,您还可以添加该suppressScrollOnNewData选项,但我不确定如果您执行上述操作是否需要它。


推荐阅读