Ag Grid 如何从代码中设置过滤器服务器端

Posted

技术标签:

【中文标题】Ag Grid 如何从代码中设置过滤器服务器端【英文标题】:Ag Grid how to set filter server side from code 【发布时间】:2021-01-02 07:09:36 【问题描述】:

我的项目中有带有 Angular 的 Ag 网格,我在网格中添加了过滤器。

 function ServerSideDatasource(server, projectListComponent) 
      return 
    
        getRows: function (params) 
          
          var response = server.getData(params.request).then((res) => 
...

当我在列标题中选择示例过滤器时,params.request.filterModel 返回 json(选择了两个过滤器):

"
"ProjectID":"filterType":"number","type":"equals","filter":10,"filterTo":null,
"ProjectName":"filterType":"text","type":"equals","filter":"P"
"

而且它有效。 但是我想在开始加载视图时将上面的json分配给Ag网格的过滤器? 我想在开始时通过为 json 分配预定义的值来设置过滤器。

我尝试用这种方式,但它不起作用:

var jsonText = " \"ProjectID\":  \"filterType\": \"number\", \"type\": \"equals\", \"filter\": 10, \"filterTo\": null ,"
      + "\"ProjectName\":  \"filterType\": \"text\", \"type\": \"equals\", \"filter\": \"P\" "
      + " ";
    var jsonFilter = JSON.parse(jsonText);

    this.gridApi.rowModel.filterManager.allFilters = jsonFilter;

【问题讨论】:

【参考方案1】:

您可以使用 setModel 方法进行过滤

    let filterComponent = this.gridApi.getFilterInstance('ProjectID');    
    filterComponent.setModel(    
          type: "equals",    
          filter: 10    
        );    
   this.gridApi.onFilterChanged();

然后以同样的方式设置其他字段过滤器。

【讨论】:

以上是关于Ag Grid 如何从代码中设置过滤器服务器端的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ag-Grid React.js 中设置默认检查?

ag-grid 不尊重 ColumnDefinitions 中设置的列的列顺序

Ag Grid 部分单元格格式 - 例如如何在单元格中设置一些文本样式 - 粗体、斜体、彩色(但不是其他文本)

Ag-grid 在 Master/Detail 组件中设置 autoheight

初始加载后 ag-grid 刷新列过滤器

空网格上的 ag-Grid 键处理程序