【发布时间】:2017-12-08 12:42:16
【问题描述】:
我有一个 react 应用程序,一切似乎都运行良好。 尽管我目前卡住了,但我想添加一个额外的过滤功能。
谁能提供一些关于如何预设过滤器的建议
使用我见过的示例过滤方法in this article我尝试实现一个基本示例,尽管它不起作用
this.state = {
gridOptions: {
.
.
.
onGridReady: this.initialFilter
},
initialFilter(){
tmp = {Currency: {type: 'contains', filter: 'usd'}};
this.state.gridOptions.api.setFilterModel(tmp);
this.state.gridOptions.api.onFilterChanged();
}
我期望运行这个是货币列将被过滤为包含过滤文本usd的条件
================================================ == 编辑: 尝试后
initialFilter(){
let hi=this.state.gridOptions.api.getFilterInstance('Currency');
hi.setType('contains');
hi.setFilter('usd');
hi.onFilterChanged();
}
什么都没有发生 + 没有错误
但是当我在现有方法中添加代码以更改过滤器时(当我手动添加过滤器时):
onAfterFilterChanged() {
let hi=this.state.gridOptions.api.getFilterInstance('Currency');
hi.setType('contains');
hi.setFilter('usd');
hi.onFilterChanged();
this.setState({
rowsToDisplay: this.state.gridOptions.api.filterManager.rowModel.rowsToDisplay.length,
filtering: this.props.report.views.filters
});
this.props.filterme(this.state.filtering);
}
然后我得到以下错误
Full error: Uncaught RangeError: Maximum call stack size exceeded
at RowRenderer.workOutFirstAndLastRowsToRender (dme-ui-buidle.js:13181)
at RowRenderer.drawVirtualRows (dme-ui-buidle.js:13178)
at RowRenderer.refreshAllVirtualRows (dme-ui-buidle.js:13138)
at RowRenderer.refreshView (dme-ui-buidle.js:13034)
at RowRenderer.onModelUpdated (dme-ui-buidle.js:12979)
at RowRenderer.onPageLoaded (dme-ui-buidle.js:12931)
at dme-ui-buidle.js:2684
at Array.forEach (<anonymous>)
at EventService.dispatchEvent (dme-ui-buidle.js:2683)
at PaginationProxy.onModelUpdated (dme-ui-buidle.js:27264)
【问题讨论】:
标签: javascript reactjs ag-grid ag-grid-react