如何在 AG Grid 初始化后更改浮动过滤器选项?

How do I change floatingFilter option after Init of AGGrid?

我将 AgGrid 与 JavaScript 模块一起使用。我试图通过调用 api.refreshHeader 方法在 Grid 初始化后更改 floatingFilter 的值,但它不起作用。

function getServices() {
    var columnDefs = [
        { field: 'name', headerName: 'Name' },
        { field: 'Category', headerName: 'Category' },
    ];

    var gridOptions = {
        animateRows: true,
        columnDefs: columnDefs,
        defaultColDef: {
            resizable: true,
            filter: true,
            sortable: true,
            flex: 1,
        },
        floatingFilter: true, // I want to change this after init
    };

    var gridDiv = document.querySelector('#serviceGrid');
    var gridInstance = new agGrid.Grid(gridDiv, gridOptions);

    $.ajax({
        type: 'GET',
        dataType:"JSON",
        url: 'FROM_URL',
        success:function(data){
            gridOptions.api.setRowData(data)
        }
    });

    // For testing purpose I'm using timeout
    setTimeout(function() {
        gridInstance.gridOptions.floatingFilter = false;
        gridInstance.gridOptions.api.refreshHeader();
    }, 5000)
}

如果我有任何错误,请纠正我。

我不确定您使用的是哪个版本,但在最新版本中,floatingFilters 进入 columnDefinitions 而不是 gridOptions

floatingFilters 移到 gridOptions 中的 defaultColDef 内。

    var gridOptions = {
    animateRows: true,
    columnDefs: columnDefs,
    defaultColDef: {
        resizable: true,
        filter: true,
        sortable: true,
        flex: 1,
        floatingFilter: true, // I want to change this after init
    },
};

然后将您的 setTimeout 函数更改为此。

// For testing purpose I'm using timeout
setTimeout(function() {
    gridInstance.gridOptions.defaultColDef.floatingFilter = false;
    gridInstance.gridOptions.api.refreshHeader();
}, 5000)

这是一个 plnkr 我从他们的一个有效示例中分叉出来的。

希望我能帮上忙。