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

MUI X Data Grid Pro过滤后弹窗未隐藏,如何配置自动关闭过滤菜单

解决方案

基础配置实现(v6.0.0及以上版本)

如果你的MUI X Data Grid版本在v6.0.0及以上,直接添加内置属性closeFilterPanelOnApply即可实现应用过滤后自动关闭弹窗,示例代码:

import { DataGrid } from "@mui/x-data-grid";

<DataGrid
  rows={rows}
  columns={columns}
  closeFilterPanelOnApply
/>

全版本兼容实现

如果是v6以下版本,或者需要自定义控制关闭时机(比如服务端过滤需要等结果返回再关闭),可以通过状态监听回调实现,代码如下:

import { useState } from 'react';
import { DataGridPro } from "@mui/x-data-grid-pro";

function FilterableDataGrid({ rows, columns }) {
  const [isFilterPanelOpen, setIsFilterPanelOpen] = useState(false);

  return (
    <DataGridPro
      rows={rows}
      columns={columns}
      componentsProps={{
        filterPanel: {
          open: isFilterPanelOpen,
          onOpen: () => setIsFilterPanelOpen(true),
          onClose: () => setIsFilterPanelOpen(false),
        }
      }}
      onFilterModelChange={(model, details) => {
        // 仅当主动触发应用过滤操作时关闭面板,避免筛选输入过程中误关
        if (details.reason === 'apply') {
          // 如果是服务端过滤,可以把关闭逻辑放到接口请求成功的回调中
          setIsFilterPanelOpen(false);
        }
      }}
    />
  );
}
  • 免费版Data Grid也可使用上述方案,只需将引入的DataGridPro替换为DataGrid即可。

服务端过滤场景提示:如果你的过滤逻辑是请求后端接口获取过滤后结果,可将关闭面板的逻辑移到接口请求成功的回调函数中,避免面板提前关闭但结果还未刷新的问题。

data grid示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:01