自定义过滤器 ag 网格反应

custom filter ag grid react

我正在尝试使用 React 在 ag 网格中实现自定义 DropDown 过滤器。 我关注的link是link

我能够创建过滤器,但默认情况下不显示过滤器。作为用户,我们需要单击列 header 旁边的 3 箭头图标,然后过滤器就会出现。

有没有办法默认显示自定义过滤器下拉菜单?

希望Floating filters能帮到你。

ag-grid documentation

中检查这个例子
      filter: "agNumberColumnFilter",
      floatingFilterComponent: "sliderFloatingFilter",
      floatingFilterComponentParams: {
        maxValue: 5,
        suppressFilterButton: true
      },

示例显示 sliderFloatingFilter,要使其成为下拉过滤器,我认为您需要为其创建自定义组件。

看看如何 team has made TextFloatingFilterComp, DateFloatingFilterComp, NumberFloatingFilterComp etc. on GitHub code

希望对您有所帮助。

我使用此列配置实现了 dropdown/enum 过滤器。我的情况是,我试图添加一个布尔过滤器。

这是完整的例子

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' 等,就像我在上面的 codesandbox 示例中所做的那样