反应AG网格-RefreshInfinitecache()不起作用

时间:2018-09-26 19:34:49

标签: ag-grid

我在应用程序中使用ag-grid-react。有一项功能,在更改应用程序中的数据库路径之后,并在按下刷新按钮后,它应该加载新数据。

要实现此目的,我在refreshInfiniteCache中使用了componentwillreceiveprops,所以当props改变(使用redux)时,它应该刷新数据。

请找到以下代码,

componentWillReceiveProps(nextProps) {
        this.gridApi.refreshInfiniteCache();
        console.log("received");
    }

    onGridReady(params) {
        this.gridApi = params.api;
        this.gridColumnApi = params.columnApi;
        params.api.sizeColumnsToFit();
        window.onresize = () => {
            this.gridApi.sizeColumnsToFit();
        };
        var current = this;
        const updateData = data => {
            data.forEach(function (data, index) {
                data.id = "R" + (index + 1);
            });
            var dataSource = {
                rowCount: null,
                getRows: function (params) {
                    current.setState({
                        paramsparameter: params
                    })
                    var Apiinput = apiinput(params.startRow, params.sortModel, params.filterModel, current.state.restore, current.state.removeallrecords);
                    var res = request('POST', 'http://localhost:4000/paginatedata', { json: Apiinput });
                    var returnfilterdata = JSON.parse(res.getBody('utf8'));
                    var lastRow = -1;
                    if (returnfilterdata.length < 100) {
                        console.log("entered last row");
                        lastRow = returnfilterdata.length;
                    }
                    params.successCallback(returnfilterdata, lastRow);
                }
            };
            params.api.setDatasource(dataSource);
        };
        updateData(this.state.rowData);
    }

但是它没有加载新数据。 我不知道我在做什么错。

谢谢 芒果

1 个答案:

答案 0 :(得分:0)

您从哪里获得refreshinfinitecache将更新您的数据?

来自my post

  

refreshInfiniteCache():将缓存中当前所有已加载的块标记为要重新加载。如果缓存中有10个块,则所有10个块都将标记为重新加载。在加载新数据之前,旧数据将继续显示。

因此,如果您要通过refreshInfiniteCache()替换所有网格数据,可以致电setRowData(rows)

  

setRowData(rows)将新行设置到网格中。

或者您需要在完成删除请求后update the grid data

params.api.updateRowData({remove:[...array of data-objects to remove...]});