反应。我尝试显示网格由外部过滤器过滤后的行数。类似于:一旦过滤器更改并调用handleFilterChange(),它将触发..api.onFilterChanged()并检查isExternalFilterPresent(),如果为true,则触发didExternalFilterPass(node)开始过滤。然后,我使用getDispalyedRows()显示过滤的结果。现在的问题是getDispalyedRows()总是返回过滤前的数字(例如,如果现在是10,则在过滤后假定为2之后,它仍然显示10。当您更改过滤器时,现在应该是6。现在显示2总是迟到一步)。似乎在过滤完成之前调用了getDispalyedRows()。
如果我在getDispalyedRows()之前设置了timeout,那么它可以按预期工作,但是它不是正确的解决方案。如果使用promise,则仍然不正确,因为dosExternalFilterPass(node)逐行递归工作,不确定最后一行何时完成。那么,有什么好的建议吗?提前致谢!
添加代码段:
class MyComponent extends....{
....
render(){
return(
<MyToolBar
gridApi={this.state.gridApi}
columnApi={this.state.columnApi}
filterChange={this.filterChange}
>
<MyGrid
onGridReady={this.onGridReady}
rowData={this.state.orders}
doesExternalFilterPass={this.doesExternalFilterPass}
isExternalFilterPresent={this.isExternalFilterPresent}
onFilterChanged={this.filterChange}>
)}
private filterChange = () => {
this.state.gridApi.onFilterChanged();
};
private isExternalFilterPresent = () => {
return true;
};
private doesExternalFilterPass = node => {
return node.data>100;
};
}
class MyToolBar extends....{
constructor(props){
......
this.state({
rowCount:0
})
}
render(){
return(
<div>
<p>this.state.rowCount<p>
</div>
)
}
private updateGridRowByFilterChange = () => {
this.props.filterChange();
this.setState({
updateRowCount: this.props.gridApi.getDisplayedRowCount(),
});
};
}