这个问题通常是由于使用 Ag Grid 时在筛选条件中使用了 “!=”或者 “not equal”(不等)操作符导致的,但是这些操作符无法排除空记录。解决方法是使用 “IS NOT NULL”(不为空)来代替。
以下是使用 “IS NOT NULL” 解决该问题的代码示例:
columnDefs: [
{field: 'name', filter: 'agTextColumnFilter', suppressFilter: true },
{field: 'age', filter: 'agNumberColumnFilter',
filterParams:{
applyButton: true,
newRowsAction: 'keep'
},
cellStyle: function (params) {
if(!params.value) {
return {'background-color':'red'};
}
}
}
];
gridOptions.api.setFilterModel({
age: {
type: "notEqual",
filter: "10"
}
});
gridOptions.api.onFilterChanged();
在这个示例中,我们使用 suppressFilter: true
来禁用 Ag Grid 内置的筛选器,然后使用 agTextColumnFilter
和 agNumberColumnFilter
分别为控制器中的文本和数字列提供自定义筛选器。我们也设定了 cellStyle
方法用来标记值为空的单元格,并使用了 applyButton
和 newRowsAction: 'keep'
来提供应用筛选器和保留过滤器后的新行的选项。
此外,我们使用 api.setFilterModel()
方法设置筛选器模型,按“不等于 10”筛选列“age”,并在 api.onFilterChanged()
中异步调用以应用筛选器。
使用这个方法,我们就可以在 Not Equal 筛选条件下排除空记录。