AG-GRID - Использование restoreFilterModel работает, но вся сетка перерисовывается перед восстановлением фильтра - PullRequest
1 голос
/ 11 января 2020

Я получил свою сетку для сохранения и восстановления фильтра, используя saveFilterModel и restoreFilterModel. Когда мой httpRequest завершен, сетка перерисовывается и «мигает», затем применяется restoreFilterModel. Итак, функционально это звук, но с точки зрения UX это нежелательно. Есть ли способ молча обновить данные строки без обновления сетки таким образом? По сути, эквивалент «Application.ScreenUpdating = False» в Excel VBA / Macro.

My refre sh функция:

      function refreshData() {
          saveFilterModel();
          let httpRequest = new XMLHttpRequest();
          httpRequest.open('GET', '**********');
          httpRequest.send();
          httpRequest.onreadystatechange = function() {
              if (httpRequest.readyState == 4 && httpRequest.status == 200) {
                  var httpResult = JSON.parse(httpRequest.responseText);
                  gridOptions.api.setRowData(httpResult);
                  gridOptions.api.updateRowData({force : true});
                  restoreFilterModel();
              }
          };

Gif поведения предоставляется (установлен для запроса данных например, каждые 3 секунды)

ag-grid_restoreFilterModel.gif

1 Ответ

0 голосов
/ 12 января 2020

Несколько вещей, которые нужно попробовать:

  • Установите deltaRowDataMode = true в gridOptions. Это приводит к тому, что сетка применяет изменения только к другим данным, а не просто заменяет все данные.

  • Удалите ваш вызов updateRowData (). SetRowData () должно быть достаточно, и после этого с updateRowdata ({force: true}), вероятно, вызывает его обновление в два раза.

  • восстановить модель фильтра перед применением новых данных с setRowData (). Если модель фильтра отличается от модели фильтра по умолчанию, установка данных в первую очередь вызовет ошибку sh, поскольку вы видите изменение данных из-за нового фильтра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...