AG-GRID:为网格预先设置(默认)过滤器
我有一个Reaction应用程序,一切似乎都运行得很好。 我想通过筛选添加一项额外的功能,尽管我目前被卡住了。
谁能就如何预置过滤器提供一些建议
使用我看到的示例过滤方法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();
}
运行后,我预计会对Currency列进行筛选,以查找包含筛选文本的条件。
================================================= 编辑: 尝试后
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)
解决方案
根据此处的文档:
https://www.ag-grid.com/javascript-grid-filtering/
和这个柱塞:
https://plnkr.co/edit/0NoAA9cEZa1Zr9brMZ2I?p=info
这样的事情应该会奏效:
var yourFilterComponent = gridOptions.api.getFilterInstance('youfieldname');
yourFilterComponent.setType('contains');
yourFilterComponent.setFilter('usd');
yourFilterComponent.onFilterChanged();
相关文章