ag-grid:在 RowModel 中禁用排序和过滤,但在 UI 中不禁用

ag-grid: Disable sorting and filtering in the RowModel, but not the UI

我正在使用的 ag-grid 从外部数据源 object 获取数据。 object 处理行的排序和过滤,并在完成后给出 ag-grid 新的 rowData

但我仍然希望能够使用 ag-grid 中的 filter-fields 并单击 headers 来更改排序。只是它不应该自己进行排序和过滤,而是通知外部 object.

有办法吗?

我试图用假人覆盖模型的 doSortdoFilter,但这完全破坏了网格。由于它们没有 return 值,我希望它们只是修改作为参数获取的 objects 并且可以像这样跳过。

this.gridApi.getModel().doFilter = () => {};
this.gridApi.getModel().doSort = () => {};

好的,再看一下 ag-grid 代码,我想我找到了一个解决方案,使用我原来的覆盖私有方法的 hacky 方法。 :/

this.gridApi.getModel().doFilter = function (changedPath) {
  changedPath.forEachChangedNodeDepthFirst((rowNode) => {
    rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
    rowNode.setAllChildrenCount(null);
  }, true);
};
this.gridApi.getModel().doSort = function () {
  this.rootNode.childrenAfterSort = this.rootNode.childrenAfterFilter.slice(0);
};