React Ag网格外部过滤器完成回调

时间:2019-08-18 20:28:19

标签: javascript reactjs typescript ag-grid

反应。我尝试显示网格由外部过滤器过滤后的行数。类似于:一旦过滤器更改并调用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(),
    });

 };

}

0 个答案:

没有答案