【问题标题】:Column filter checkbox not updated列过滤器复选框未更新
【发布时间】:2018-10-10 22:05:49
【问题描述】:

考虑 ag​​-grid 中的一列,它只能有两个值之一,“是”和“否”作为字符串。

ag-grid 有一个内置的列过滤器,它通过复选框显示该列的所有不同值。

Yes and No options

此过滤对用户交互非常有效,但我需要在第一次渲染之前过滤掉具有“否”值的行,无需用户交互

我可以通过使用来完成所需的过滤

gridOptions.isExternalFilterPresent
gridOptions.doesExternalFilterPass

但是,当用户单击过滤器按钮时,他们只会看到列中当前值的选项,而不是所有可能的值。

Yes only filter options

问题是用户可能甚至不知道“否”是一个可能的选项,并且不知道网格当前过滤了什么。

我相信为了帮助解决这种情况,您提供所有可能的值,可以为过滤器指定为以下filterParams

{
  headerName: 'ETF',
  field: 'isEtf',
  filterParams: {
    values: ['Yes', 'No'],
    suppressRemoveEntries: true
  }
}

当我提供values 时,网格将显示两个复选框,但它并不准确,因为所有“否”值都已被过滤掉,并且应该在“否”选项旁边有一个未选中的复选框。

suppressRemoveEntries 设置为 true 似乎没有任何效果,尽管它的描述似乎表明这可以解决我的问题。

有没有办法以编程方式控制复选框的状态,或者在应用我的外部过滤器后让网格根据filterParams.values 中提供的可能值重置/识别当前过滤器选项?

【问题讨论】:

    标签: angular ag-grid


    【解决方案1】:

    我从未找到使用外部过滤器的解决方案,但利用网格创建的设置过滤器达到了预期的结果。

    const filter: IFilterComp = gridOptions.api.getFilterInstance('isEtf');
    
    // bracket notation required because current typing does not include 
    // the unselectValue function as of ag-grid v17.1.1
    filter['unselectValue']('No');
    
    // you must let grid know of the change so it will be applied to data in grid
    gridOptions.api.onFilterChanged();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 2014-07-21
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多