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

如何在MUI DataGrid Pro中自定义筛选面板页脚(无需重写整个面板)

在MUI DataGrid Pro中添加自定义筛选面板页脚的方法

MUI DataGrid Pro官方并未直接提供FilterPanelFooter这类组件配置项,但可以通过组件插槽系统,在不重写完整筛选面板的前提下,自定义页脚区域并保留原有的“Add Filter”按钮。

实现步骤与代码示例

1. 编写自定义页脚组件

组件接收原有页脚元素作为参数,在其旁新增刷新按钮并实现逻辑:

import { DataGridPro, useGridApiContext } from '@mui/x-data-grid-pro';
import Button from '@mui/material/Button';
import RefreshIcon from '@mui/icons-material/Refresh';

const CustomFilterPanelFooter = ({ existingFooter }) => {
  // 获取DataGrid的API用于操作数据和筛选状态
  const api = useGridApiContext();

  const handleRefreshFilters = () => {
    // 获取当前筛选模型,用于后续带条件请求新数据
    const currentFilter = api.getFilterModel();
    // 这里替换为你的数据刷新逻辑:比如调用接口传入currentFilter,更新rows
    console.log('基于当前筛选条件刷新数据', currentFilter);
    // 若需强制刷新表格,可调用api.refresh()
    api.refresh();
  };

  return (
    <div style={{ display: 'flex', gap: 8, alignItems: 'center', padding: '8px 16px' }}>
      {/* 保留原有的"Add Filter"按钮区域 */}
      {existingFooter}
      {/* 新增的刷新按钮 */}
      <Button
        variant="outlined"
        startIcon={<RefreshIcon />}
        onClick={handleRefreshFilters}
      >
        刷新筛选
      </Button>
    </div>
  );
};

2. 在DataGrid中配置插槽

通过componentsProps.filterPanel.footer注入自定义页脚:

const MyDataGrid = ({ rows, columns }) => {
  return (
    <DataGridPro
      rows={rows}
      columns={columns}
      componentsProps={{
        filterPanel: {
          footer: (props) => <CustomFilterPanelFooter existingFooter={props.children} />
        }
      }}
      // 其他表格配置项...
    />
  );
};

关键说明

  • props.children对应筛选面板原有的页脚内容(即“Add Filter”按钮),通过这种方式无需重写整个筛选面板结构
  • 借助useGridApiContext()可直接获取表格API,方便获取筛选状态、刷新表格或更新数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:05:15