列过滤器复选框未更新

Posted

技术标签:

【中文标题】列过滤器复选框未更新【英文标题】: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 中提供的可能值重置/识别当前过滤器选项?

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于列过滤器复选框未更新的主要内容,如果未能解决你的问题,请参考以下文章

使用jQuery更新复选框时,AngularJS不会刷新

ASP:带有分页的 Gridview 复选框列未显示选中了哪个复选框

为啥滚动网格中的 jqxgrid 未选中复选框或单选按钮列?

检测是不是未选中任何复选框以更新复选框列表

使用复选框更新数据库列

jQuery是复选框上的属性更新未触发更改事件