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

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

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

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

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

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


person Paul    schedule 17.04.2019    source источник


Ответы (2)


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

Метод 3 - Дельта-данные строки Дельта-метод использует метод данных строки выше, но имеет свойство deltaRowDataMode = true.

Когда deltaRowDataMode включен, сетка сравнивает данные новой строки с данными текущей строки и создает для вас объект транзакции. Затем сетка выполняет изменение как транзакцию обновления, сохраняя все выбранные сетки, фильтры и т. Д.

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

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

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

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

Для удобства вы также можете добавить параметр suppressScrollOnNewData, хотя я не уверен, нужен ли он, если вы сделаете это выше.

person Dominic    schedule 17.04.2019
comment
Ты бог среди людей ... Я назову 10 детей твоими именами - person DanielGaffey; 21.05.2020
comment
Хороший! Это сработало. deltaRowDataMode устарел, и immutableData можно удалить в - person solbs; 11.08.2020

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

// gridOptions
{
    ...,
    deltaRowDataMode: true,
    getRowNodeId: function (data) {
        return data.id;
    },
},
person Arthur Flower    schedule 03.12.2020