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

qjp7pelc  于 2023-02-04  发布在  React
关注(0)|答案(2)|浏览(301)

Ag-Grid提供了ensureIndexVisible(index, 'middle');方法,使用该方法可以很容易地滚动到选定的索引。但是如何从用户那里获得滚动位置的最后一个已知索引?
举个例子:我们有一个600行的表。用户正在滚动--发生了一个更新。表发生了一些变化。现在我有了表滚动到顶部的行为。用户现在必须再次滚动到他上一个位置。
我想将用户重定向到历史最后滚动位置:ensureIndexVidisble(USERS_LAST_KNOWN_SCROLLING_POSITION, 'middle');
除信息外:用户不在表中工作。2所以我不能保存他最后一次点击一行。
我怎样才能做到这一点?

  • //编辑/提示*

如果你想帮自己一个忙,你应该从Tanstack而不是AG网格公司切换到react-table

5gfr0r5j

5gfr0r5j1#

版本23.1.0的更新(2020年5月1日)+

使用immutableData=true代替deltaRowDataMode=true
他们以典型的AG方式在文档中隐藏这一重要信息:
方法3 -增量行数据增量方法使用上述行数据方法,但具有属性deltaRowDataMode=true。
当deltaRowDataMode处于打开状态时,网格将比较新行数据与当前行数据,并为您创建一个事务对象。然后,网格将更改作为更新事务执行,同时保留所有网格选择、筛选器等。
如果您想管理网格之外的数据(例如Redux存储中的数据),然后让网格计算出需要进行哪些更改以保持网格的数据版本是最新的,请使用此选项。
https://www.ag-grid.com/javascript-grid-data-update/#bulk-updating
在我看来,如果您的行具有唯一的ID(我希望它们具有唯一的ID,这样做是一个很好的实践),则应该始终使用此设置。将deltaRowDataMode设置为true,并使用getRowNodeId为行指定唯一的ID。
在此之后,您的网格将更有效地更新(只更新需要的内容),并且不会跳到顶部,因为它不会在更新时重新创建网格中的每一行和单元格。
为了更好地衡量,您还可以添加suppressScrollOnNewData选项,尽管我不确定如果您这样做是否需要它。

bvhaajcl

bvhaajcl2#

非常感谢,为了给大家留点时间,下面是你必须传递给属性[gridOptions]的内容。只要你的数据有一个唯一的ID,你就被设置了。

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

相关问题