ag-grid:“如何滚动到上一个已知位置”?

时间:2019-04-17 08:38:33

标签: reactjs ag-grid ag-grid-react

Ag-Grid提供了方法ensureIndexVisible(index, 'middle');,该方法很容易滚动到选定的索引。但是,如何从用户那里获得滚动位置的最新已知索引?

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

我想将用户重定向到历史上一个滚动位置:ensureIndexVidisble(USERS_LAST_KNOWN_SCROLLING_POSITION, 'middle');

除信息外:用户不在表中工作。因此,我无法保存他最后一次单击的行。

我该如何实现?

2 个答案:

答案 0 :(得分:2)

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

  

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

     

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

     

如果要管理网格外部的数据(例如,在网格中   Redux存储),然后让网格确定需要进行哪些更改   保持网格数据的最新状态。

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

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

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

出于很好的考虑,您也可以添加suppressScrollOnNewData选项,尽管我不确定如果执行上述操作是否需要它。

答案 1 :(得分:1)

感谢一百万,给大家留出一些时间,这是您必须传递给属性[gridOptions]的条件。只要您的数据具有唯一的ID,便已设置。

// gridOptions
{
    ...,
    deltaRowDataMode: true,
    getRowNodeId: function (data) {
        return data.id;
    },
},