Ag-grid: "Как прокрутить до последней известной позиции"?

Ag-Grid предлагает метод ensureIndexVisible(index, 'middle'); С помощью этого метода легко перейти к выбранному индексу. Но как мне получить от пользователя последний известный индекс позиции прокрутки?

Пример: У нас есть таблица с 600 строками. Пользователь листает — происходит обновление. Таблица немного изменилась. Теперь у меня такое поведение, что таблица прокручивается вверх. Теперь пользователь должен снова прокрутить до своей последней позиции.

Я хотел бы перенаправить пользователя на его последнюю позицию прокрутки: ensureIndexVidisble(USERS_LAST_KNOWN_SCROLLING_POSITION, 'middle');

В дополнение к информации: пользователь не работает в таблице. Поэтому я не могу сохранить его последний клик по строке.

Как я могу этого добиться?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
15
0
9 227
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В типичной манере AG они скрывают эту важную информацию в своих документах:

Method 3 - Delta Row Data The delta method is using the row data method above but having the property deltaRowDataMode=true.

When deltaRowDataMode is on, the grid will compare the new row data with the current row data and create a transaction object for you. The grid then executes the change as an update transaction, keeping all of the grids selections, filters etc.

Use this if you want to manage the data outside of the grid (eg in a Redux store) and then let the grid work out what changes are needed to keep the grid's version of the data up to date.

https://www.ag-grid.com/javascript-grid-data-update/#массовое обновление

На мой взгляд, это должна быть настройка, которую вы всегда должны использовать, если ваши строки имеют уникальный идентификатор (я надеюсь, что это так, это хорошая практика). Установите для deltaRowDataMode значение true и используйте getRowNodeId, чтобы указать уникальный идентификатор строки.

После этого ваша сетка будет обновляться намного эффективнее (обновляя только то, что необходимо), и она не будет прыгать наверх, когда это произойдет, поскольку она не воссоздает каждую строку и ячейку в сетке при обновлении.

На всякий случай вы также можете добавить опцию suppressScrollOnNewData, хотя я не уверен, что она нужна, если вы делаете вышеописанное.

Ты бог среди мужчин... Я назову в твою честь 10 детей

DanielGaffey 21.05.2020 05:14

Хороший! Это сработало. deltaRowDataMode устарел, и immutableData можно добавить

solbs 11.08.2020 18:12

Спасибо большое, чтобы уделить немного времени всем, вот что вам нужно передать в свойство [gridOptions]. Пока ваши данные имеют уникальный идентификатор, вы настроены.

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

Другие вопросы по теме