【问题标题】:ag-grid: "How to scroll to last known position"?ag-grid:“如何滚动到最后一个已知位置”?
【发布时间】:2019-09-07 10:50:27
【问题描述】:

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

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

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

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

我怎样才能做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

    方法 3 - Delta Row Data delta 方法是使用行数据 上面的方法,但具有属性 deltaRowDataMode=true。

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

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

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

    在我看来,如果您的行具有唯一 ID,那么您应该始终使用此设置(我希望他们这样做,这样做是个好习惯)。将deltaRowDataMode 设置为 true 并使用getRowNodeId 指定行的唯一 ID。

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

    您还可以添加suppressScrollOnNewData 选项,但如果您执行上述操作,我不确定是否需要它。

    【讨论】:

    • 你是男人中的神...我会以你的名字命名10个孩子
    • 不错!这行得通。 deltaRowDataMode 已弃用,immutableData 可以放入
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2019-06-10
      • 1970-01-01
      • 2011-08-22
      相关资源
      最近更新 更多