this.gridApi.refreshInfiniteCache()不清除selectedRows

2019-10-29 18:00发布

我使用无限行模式,当我从网格中删除选定的行,然后我打电话清爽缓存,因此可以说,我删除了该ID = 1,refreshInfiniteCache(); 新行通过GetRows的来自DB()它的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();
  })
}

Answer 1:

refreshInfiniteCache()标记所有在缓存中重新加载当前加载的模块。 如果您在高速缓存器10块,全部10个将被标记为重新加载。 旧的数据将继续显示,直到新的数据被加载。

所以,你可以调用refreshInfiniteCache()如果你将通过替换所有网格数据setRowData(rows)

setRowData(rows)设置新行入电网。

或者您需要更新网格数据完成删除请求后。

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


Answer 2:

您可以尝试deleteRow()函数中下面的代码:

   gridApi.getSelectedNodes().forEach(node => {
      var id = node.data.id;
      var rowNode = gridApi.getRowNode(id);
      rowNode.setSelected(false);
    })


文章来源: this.gridApi.refreshInfiniteCache() is not clearing selectedRows