我尝试使用React在ag网格中实现自定义DropDown过滤器。 我关注的链接是link
我能够创建过滤器,但默认情况下不会显示过滤器。作为用户,我们需要单击列标题旁边的3箭头图标,然后显示过滤器。
默认情况下有没有办法显示自定义过滤器dropDown?
答案 0 :(得分:1)
我希望Floating filters
能为您提供帮助。
filter: "agNumberColumnFilter",
floatingFilterComponent: "sliderFloatingFilter",
floatingFilterComponentParams: {
maxValue: 5,
suppressFilterButton: true
},
示例显示sliderFloatingFilter
,为了使其成为下拉过滤器,我认为您需要为其创建自定义组件。
了解ag-grid小组在 GitHub code 上做出TextFloatingFilterComp
,DateFloatingFilterComp
,NumberFloatingFilterComp
等的方式
希望这有帮助。
答案 1 :(得分:0)
我使用此列配置实现了下拉列表/枚举过滤器。就我而言,我试图添加一个布尔过滤器。
这是完整的示例
https://codesandbox.io/s/ag-grid-react-enum-filter-q4er8?file=/src/App.js:1572-1599
const getEnumColumnParams = (enumMap) => {
return {
cellRenderer: (params) => {
if (!params.data) return "";
const { value } = params;
return enumMap[value];
},
filterParams: {
buttons: ['reset', 'apply'],
closeOnApply: true,
filterOptions: [
"empty",
...Object.keys(enumMap).map(key => {
return {
displayKey: key,
displayName: enumMap[key],
test: function (filterValue, cellValue) {
return cellValue === true;
},
hideFilterInput: true,
};
})
],
suppressAndOrCondition: true,
},
};
};
const boolEnum = {
true: 'Yes',
false: 'No'
};
const colorEnum = {
'#ff00000': 'Red',
'#00ff00': 'Green',
'#0000ff': 'Blue',
};
const columnDefs = [
{
field: 'available',
...getEnumColumnParams(boolEnum),
},
{
field: 'color',
...getEnumColumnParams(colorEnum),
}
];
或者您可以像在上面的代码和框示例中所做的那样,创建列类型并在列定义中分配type: 'boolColumn'
等