列筛选器复选框未更新

时间:2018-04-30 19:17:12

标签: angular ag-grid

考虑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时,网格会显示两个复选框,但它并不准确,因为所有"否"值已被过滤掉,并且在" No"旁边应该有一个未选中的复选框。选项。

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

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

1 个答案:

答案 0 :(得分:0)

我从来没有找到使用外部过滤器的解决方案,但是利用网格创建的设置过滤器可以达到预期的结果。

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();