this.gridApi.refreshInfiniteCache () не очищает selectedRows - PullRequest
0 голосов
/ 24 сентября 2018

Я использую модель бесконечного ряда, и когда я удалил выбранную строку из таблицы, я вызываю обновляющий кэш, скажем, я удалил выбранный id = 1 , но после refreshInfiniteCache () ;новая строка поступает из БД через getRows () ее id = 2 , и эта выбранная строка не отменяется автоматически, и если я снова нажимаю кнопку удаления, то получаю двастроки в selectedData.Это почему?из this.gridApi.getSelectedRows () и getSelectedNodes () я получаю две строки с предыдущей строкой id = 1 и следующей строкой, которая пришла после удаления с id = 2. Я должен получитьтолько одна строка id = 2 не id = 1 снова я удалил эту строку и обновил кеш.Пожалуйста, скажите мне, я что-то упустил?

deleteRow() {
const selectedData = this.gridApi.getSelectedRows();
this.assetTypeService.deleteAssetType(selectedData[0].AssetTypeID)
  .subscribe((result) => {
    this.gridApi.refreshInfiniteCache();
  })
}

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы можете попробовать приведенный ниже код внутри функции deleteRow ():

   gridApi.getSelectedNodes().forEach(node => {
      var id = node.data.id;
      var rowNode = gridApi.getRowNode(id);
      rowNode.setSelected(false);
    })
0 голосов
/ 24 сентября 2018

refreshInfiniteCache(): помечает все загруженные в данный момент блоки в кеше для перезагрузки.Если у вас есть 10 блоков в кэше, все 10 будут помечены для перезагрузки. Старые данные будут отображаться до тех пор, пока не будут загружены новые данные.

Таким образом, вы можете позвонить refreshInfiniteCache(), если вы замените все данные сетки через setRowData(rows)

setRowData(rows) Установите новые строки в сетку.

или вам нужно обновить данные сетки после завершения запроса на удаление.

params.api.updateRowData({remove:[...array of data-objects to remove...]});
...