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.
有办法吗?
我试图用假人覆盖模型的 doSort
和 doFilter
,但这完全破坏了网格。由于它们没有 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);
};
我正在使用的 ag-grid 从外部数据源 object 获取数据。 object 处理行的排序和过滤,并在完成后给出 ag-grid 新的 rowData
。
但我仍然希望能够使用 ag-grid 中的 filter-fields 并单击 headers 来更改排序。只是它不应该自己进行排序和过滤,而是通知外部 object.
有办法吗?
我试图用假人覆盖模型的 doSort
和 doFilter
,但这完全破坏了网格。由于它们没有 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);
};