You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Material UI DataGrid仅显示指定过滤操作符(如contains)

限制Material UI DataGrid过滤器为单一操作符并隐藏选择菜单

全局配置(所有列生效)

通过DataGrid的filterOperators属性全局替换默认过滤器操作符列表,仅保留"contains"选项;再利用slotProps配置在仅存单个操作符时隐藏选择菜单。

完整代码示例

import { DataGrid, GridFilterOperator } from '@mui/x-data-grid';

// 定义仅包含"contains"的自定义过滤器操作符
const customFilterOperators: GridFilterOperator[] = [
  {
    label: '包含',
    value: 'contains',
    getApplyFilterFn: (filterItem) => {
      if (!filterItem.value) return null;
      // 实现忽略大小写的包含过滤逻辑
      return (row) =>
        String(row[filterItem.field]).toLowerCase().includes(filterItem.value.toLowerCase());
    },
  },
];

// 示例数据
const rows = [
  { id: 1, name: '张三', age: 28 },
  { id: 2, name: '李四', age: 32 },
  { id: 3, name: '王五', age: 25 },
];

const columns = [
  { field: 'id', headerName: 'ID', width: 70 },
  { field: 'name', headerName: '姓名', width: 150 },
  { field: 'age', headerName: '年龄', width: 100 },
];

export default function SingleFilterOperatorGrid() {
  return (
    <div style={{ height: 400, width: '100%' }}>
      <DataGrid
        rows={rows}
        columns={columns}
        filterOperators={customFilterOperators}
        slotProps={{
          headerFilter: {
            // 当操作符数量为1时,隐藏操作符选择菜单
            operatorSelectProps: (params) => ({
              hidden: params.operators.length === 1,
            }),
          },
        }}
      />
    </div>
  );
}

针对特定列单独配置

若无需全局生效,可在目标列的定义中单独设置filterOperators属性:

const columns = [
  {
    field: 'name',
    headerName: '姓名',
    width: 150,
    // 仅该列使用自定义操作符
    filterOperators: customFilterOperators,
  },
  // 其他列保持默认操作符
  { field: 'id', headerName: 'ID', width: 70 },
  { field: 'age', headerName: '年龄', width: 100 },
];

关键配置说明

  • filterOperators:接收GridFilterOperator数组,自定义列的可用过滤器操作符,此处仅保留"contains"逻辑,覆盖默认的equals、starts with等选项。
  • slotProps.headerFilter.operatorSelectProps:通过回调判断当前列的操作符数量,当仅存在1个操作符时隐藏选择菜单,简化用户操作界面。

内容的提问来源于stack exchange,提问作者timitalia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:42:46