Ag grid Ag grid React:无限行模型数据源中的预设过滤器

Ag grid Ag grid React:无限行模型数据源中的预设过滤器,ag-grid,ag-grid-react,Ag Grid,Ag Grid React,使用无限行模型,具有排序和过滤功能 根据文档,我已经从服务器端处理了排序和过滤。每次我更改排序/筛选模型时都会调用Datasource。但我无法预先设置过滤器模型,以确定其首次加载到网格中的时间。无法将初始筛选器模型发送到服务器 const dataSource = { rowCount: null, getRows: params => { const sortedFilteredData = req

使用无限行模型,具有排序和过滤功能

根据文档,我已经从服务器端处理了排序和过滤。每次我更改排序/筛选模型时都会调用Datasource。但我无法预先设置过滤器模型,以确定其首次加载到网格中的时间。无法将初始筛选器模型发送到服务器

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);
            }
        };
const数据源={
行计数:空,
getRows:params=>{
const sortedFilteredData=requestRows(数据,params.sortModel,params.filterModel);
const rowsThisPage=dataAfterSortingAndFiltering.slice(params.startRow,params.endRow);
常量lastRow=-1;

如果(dataAfterSortingAndFiltering.length我不确定您使用的是哪个版本的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();
    }
此外,升级到23.1.0后,如果您在同一字段上进行筛选,您在该字段上设置的初始筛选将对您的数据源执行2次调用。此字段上有一个已发布的已打开但随后关闭。其他人提供了解决方法,但它们都是角度的,因此我正在尝试找出如何在React中执行此操作。希望这有帮助,如果如果您想在React中找到解决方法,请告诉我。:)

    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));
    }