AG-GRID:为网格预先设置(默认)过滤器 [英] ag-grid: pre-setting a (default) filter for the grid

查看:73
本文介绍了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();

这篇关于AG-GRID:为网格预先设置(默认)过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆