以角度将列标题过滤器保存在 ag-grid 中

Posted

技术标签:

【中文标题】以角度将列标题过滤器保存在 ag-grid 中【英文标题】:Save column header filter in ag-grid in angular 【发布时间】:2021-12-06 08:07:25 【问题描述】:

我正在开发一个现有应用程序,在该应用程序中,他们使用 ag-grid 库为他们在应用程序中拥有的大多数网格提供角度。现在,ag-grid 提供了通过使用列标题中的过滤器选项根据列值过滤网格的功能。我正在提供指向该https://www.ag-grid.com/angular-data-grid/filtering-overview/ 的链接。我想实现一个功能,我们可以保存用户正在搜索的过滤器关键字,当他回到同一个网格时,之前的过滤器已经应用。例如https://plnkr.co/edit/?p=preview&preview 在这里,我们可以选择运动员并通过转到列并搜索一个值来过滤它,所以我想要的是,如果我搜索“abc”,我应该能够保留它。有没有办法做到这一点 ?我正在为上面的链接提供 colDef

this.columnDefs = [
       field: 'athlete' ,
      
        field: 'age',
        filter: 'agNumberColumnFilter',
        maxWidth: 100,
      ,
      
        field: 'date',
        filter: 'agDateColumnFilter',
        filterParams: filterParams,
      ,
      
        field: 'total',
        filter: false,
      ,
    ];
    this.defaultColDef = 
      flex: 1,
      minWidth: 150,
      filter: true,
    ;
  

感谢任何形式的帮助,谢谢:)

【问题讨论】:

您在这里说的是哪个过滤器,快速、列还是外部?您的 plunker 链接不正确。 @abhisheksahu 我说的是列标题上的列过滤器,我知道列状态上有一些属性,如宽度、弹性、固定等,但我需要存储用于过滤的过滤关键字,然后保存。 onFilterChanged: function() console.log('onFilterChanged');, 或 `onFilterModified:function() console.log('onFilterModified');` 您可以在应用过滤器时在网格定义中定义这两个事件,您可以存储过滤器在某些变量中,以后可以使用该过滤器 【参考方案1】:

您可以使用网格事件onFilterChanged 保存应用的过滤器。在这里,您可以通过调用 api.getFilterModel() 来获取 filterModel。在下面的 plunkr 中,我们通过将过滤器模型保存到本地存储并通过在 Grid Event onFirstDataRendered 中应用它来恢复它来展示这一点@


  onFilterChanged(params) 
    const filterModel = params.api.getFilterModel();
    localStorage.setItem('filterModel', JSON.stringify(filterModel));
  

  onFirstDataRendered(params) 
    const filterModel = JSON.parse(localStorage.getItem('filterModel'));
    if (filterModel) 
      params.api.setFilterModel(filterModel);
    
  

在following plunkr中看到这个实现

您还可以找到以下相关文档页面:

Saving and Restoring Filter Models

Grid Events

【讨论】:

【参考方案2】:

要将现有的过滤器应用于 ag-grid,可以通过在 gridApi 上设置 filterModel 来完成。

    gridApi.getFilterInstance("fieldName").setModel(
        "filterType":"equals", //type of filter condition
        "type":"text", //Type of column [text/number/date]
        "filter":"value" //Value need to be applied as filter.
     )

类似于 onFilterChanged 事件,您可以捕获更改并动态应用过滤器。

【讨论】:

以上是关于以角度将列标题过滤器保存在 ag-grid 中的主要内容,如果未能解决你的问题,请参考以下文章

在 ag-grid 中带有下拉菜单的自定义过滤器在角度 10 中不起作用

Ag-Grid:应用过滤器后如何保存和重新加载列

在 ag-grid 过滤器中允许空格

如何通过 ag-grid 将过滤器保留在 cookie 中?

Ag-grid 隐藏过滤列

ag-grid:在过滤器测试功能中访问行数据