Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ag网格:为网格预先设置(默认)过滤器_Javascript_Reactjs_Ag Grid_Ag Grid React - Fatal编程技术网

Javascript ag网格:为网格预先设置(默认)过滤器

Javascript ag网格:为网格预先设置(默认)过滤器,javascript,reactjs,ag-grid,ag-grid-react,Javascript,Reactjs,Ag Grid,Ag Grid React,我有一个react应用程序,看起来一切都很好。 我想添加一个额外的过滤功能,虽然我目前被卡住了 有人能就如何预设过滤器提供一些建议吗 使用我看到的示例过滤方法,我尝试实现一个基本示例,尽管它不起作用 this.state = { gridOptions: { . . . onGridReady: this.initialFilter }, initialFilter(){ tmp = {Currency: {type: 'contains', filte

我有一个react应用程序,看起来一切都很好。 我想添加一个额外的过滤功能,虽然我目前被卡住了

有人能就如何预设过滤器提供一些建议吗

使用我看到的示例过滤方法,我尝试实现一个基本示例,尽管它不起作用

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();
} 
无事发生,无差错

但当我在现有方法中添加代码以更改过滤器时(当我手动添加过滤器时):

然后我得到下面的错误

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)
完全错误:未捕获范围错误:超过最大调用堆栈大小
在RowRenderer.workOutFirstAndLastRowsToRender处(dme ui buildle.js:13181)
在RowRenderer.drawVirtualRows(dme ui buildle.js:13178)
在RowRenderer.refreshAllVirtualRows(dme ui buildle.js:13138)
在RowRenderer.refreshView(dme ui buildle.js:13034)
在RowRenderer.onModelUpdated(dme ui buildle.js:12979)
在RowRenderer.onPageLoaded处(dme ui buildle.js:12931)
在dme ui Buildle.js:2684
在Array.forEach()处
在EventService.dispatchEvent(dme ui buildle.js:2683)
在PaginationProxy.onModelUpdated处(dme ui buildle.js:27264)

根据此处的文档:

还有这个笨蛋:

像这样的事情应该可以做到:

var yourFilterComponent = gridOptions.api.getFilterInstance('youfieldname');
yourFilterComponent.setType('contains');
yourFilterComponent.setFilter('usd');
yourFilterComponent.onFilterChanged();

我已经尝试过这样做(唯一的区别是我对我的过滤器组件使用了“this.state.gridOptions…”,但我仍然不断地得到一个错误:uncaughtrangeerror:超过了最大调用堆栈大小;我不确定是什么导致了它,如果我像在原始文章中一样将代码放在它自己的方法中,那么什么也不会发生(并且没有错误)。如果我将代码放在AfterFilterChanged()上的现有方法中,则我会看到筛选器已应用,但我收到该错误,它会阻止我手动应用其他筛选器:(可能是因为我需要使用您指定的代码,但使用的是某种方法吗?尝试后用我的结果更新了原始帖子。这看起来像是一个排序问题。在网格准备就绪后,但在我手动在顶部应用我自己的过滤器之前,需要在某个点应用代码。我之所以这样说,是因为我将代码复制/粘贴到了与方法相关的o行选择,当我单击一行时,网格按预期进行过滤。我只需要找出代码的放置位置
var yourFilterComponent = gridOptions.api.getFilterInstance('youfieldname');
yourFilterComponent.setType('contains');
yourFilterComponent.setFilter('usd');
yourFilterComponent.onFilterChanged();