我在应用程序中使用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);
}
但是它没有加载新数据。 我不知道我在做什么错。
谢谢 芒果
答案 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...]});