考虑ag-grid中的一列只能有两个值中的一个,"是"和"不"作为字符串。
ag-grid有一个内置的列过滤器,可以显示带有复选框的该列的所有不同值。
此过滤功能非常适合用户交互,但我需要使用"否"过滤掉行。首次渲染之前的值,没有用户交互。
我可以通过
完成所需的过滤gridOptions.isExternalFilterPresent
gridOptions.doesExternalFilterPass
但是,当用户单击过滤器按钮时,他们只会看到当前列中值的选项,而不是所有可能的值。
问题是用户可能甚至不知道"否"是一个可能的选项,不知道网格当前被过滤了什么。
我相信为了帮助解决这个问题,您可以提供可以为过滤器指定的所有可能值filterParams:
{
headerName: 'ETF',
field: 'isEtf',
filterParams: {
values: ['Yes', 'No'],
suppressRemoveEntries: true
}
}
当我提供values
时,网格会显示两个复选框,但它并不准确,因为所有"否"值已被过滤掉,并且在" No"旁边应该有一个未选中的复选框。选项。
suppressRemoveEntries
的设置为true似乎没有效果,即使它的描述似乎表明这可以解决我的问题。
有没有办法以编程方式控制复选框的状态,或者在应用外部过滤器后,网格重置/识别当前过滤器选项与filterParams.values
中提供的可能值?
答案 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();