this.gridApi.refreshInfiniteCache() не очищает selectedRows

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

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

person Vishal Mittal    schedule 24.09.2018    source источник
comment
предоставьте код для функции deleteRow   -  person un.spike    schedule 24.09.2018
comment
@un.spike Это уже есть в моем вопросе.   -  person Vishal Mittal    schedule 24.09.2018


Ответы (2)


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

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

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

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

params.api.updateRowData({remove:[...array of data-objects to remove...]});
person un.spike    schedule 24.09.2018
comment
как я уже сказал, я использую модель бесконечной строки, поэтому я думаю, что не могу использовать в этом updateRowData или setRowData. Могу я ? - person Vishal Mittal; 24.09.2018
comment
а что такое diff для CRUD операций? просто попробуй - person un.spike; 24.09.2018

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

   gridApi.getSelectedNodes().forEach(node => {
      var id = node.data.id;
      var rowNode = gridApi.getRowNode(id);
      rowNode.setSelected(false);
    })
person Arcot Deepika    schedule 24.10.2018