使用无限行模型,并进行排序和过滤。
根据文档,我已经从服务器端处理了排序和过滤。每次我更改排序/过滤器模型时都称为数据源。但是我无法为过滤器模型首次加载到网格中时进行预设。无法将初始过滤器模型发送到服务器。
const dataSource = {
rowCount: null,
getRows: params => {
const sortedFilteredData = requestRows(data, params.sortModel, params.filterModel);
const rowsThisPage = dataAfterSortingAndFiltering.slice(params.startRow, params.endRow);
const lastRow = -1;
if (dataAfterSortingAndFiltering.length <= params.endRow) {
lastRow = dataAfterSortingAndFiltering.length;
}
params.successCallback(rowsThisPage, lastRow);
}
};
第一次调用数据源时,filterOptions为{}。
[我尝试使用api.setFilterModel()在onGridReady()上设置模型,但是它引发了我们可以将setFilterModel与无限行模型类型一起使用的错误。
我不确定您使用的是哪个版本的ag-grid,但是您可以初始化过滤器,但问题是这样做时将对数据源进行2次调用。从v20.0升级到v23.1后,我开始遇到这种情况。代码如下:
// InitialFilter is just a prop I pass into my grid
InitialFilter: (params) => {
let filterComponent = params.api.getFilterInstance("<Your Field Name>");
filterComponent.setModel({
type: "greaterThan",
filter: 0
});
params.api.onFilterChanged();
}
我在onGridReady函数中对此进行了设置:
onGridReady(params) {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
// initialFilter prop is set here
if (this.props.initialFilter) {
this.props.initialFilter(params);
}
params.api.setServerSideDatasource(this.dataSource(params));
}
此外,在升级到23.1.0后,如果您在同一字段上进行过滤,那么您设置的初始过滤器将对数据源进行2次调用。对此有一个已发行的GitHub Issue 1785,但随后已关闭。其他人提供了解决方法,但是它们都在Angular中,所以我试图弄清楚如何在React中做到这一点。希望这会有所帮助,如果您在React中找到解决方法,请告诉我。 :)