自定义过滤器ag网格反应

时间:2018-03-12 10:12:56

标签: reactjs filter ag-grid

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

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

默认情况下有没有办法显示自定义过滤器dropDown?

2 个答案:

答案 0 :(得分:1)

我希望Floating filters能为您提供帮助。

ag-grid documentation

中查看此示例
      filter: "agNumberColumnFilter",
      floatingFilterComponent: "sliderFloatingFilter",
      floatingFilterComponentParams: {
        maxValue: 5,
        suppressFilterButton: true
      },

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

了解小组在 GitHub code 上做出TextFloatingFilterCompDateFloatingFilterCompNumberFloatingFilterComp等的方式

希望这有帮助。

答案 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'