0

0

如何在 MUI X DataGrid 中通过自定义按钮导出单条记录为 CSV

霞舞

霞舞

发布时间:2026-01-08 14:24:01

|

887人浏览过

|

来源于php中文网

原创

如何在 MUI X DataGrid 中通过自定义按钮导出单条记录为 CSV

本文介绍如何在 mui x datagrid(社区版)中,不依赖内置工具栏,而是通过点击自定义按钮精准导出**当前行(单条记录)**为 csv 文件,涵盖 api 调用、过滤逻辑与完整可复用代码示例。

MUI X DataGrid 提供了强大的 exportDataAsCsv 方法,但默认导出的是整个数据集。若需仅导出某一行(即用户点击操作所在的具体记录),关键在于:先获取该行 ID 或数据,再通过 getRowsToExport 选项动态筛选待导出行

以下是一个完整、生产就绪的实现方案:

MedPeer科研绘图
MedPeer科研绘图

生物医学领域的专业绘图解决方案,告别复杂绘图,专注科研创新

下载

✅ 步骤一:创建支持单行导出的自定义按钮组件

import React from 'react';
import {
  GridToolbarContainer,
  GridCsvExportOptions,
  useGridApiContext,
} from '@mui/x-data-grid';
import { Button } from '@mui/material';
import { FileDownload as FileDownloadIcon } from '@mui/icons-material';

interface SingleRowExportButtonProps {
  rowId: string | number; // 当前行唯一标识(通常为 row.id)
}

const SingleRowExportButton = ({ rowId }: SingleRowExportButtonProps) => {
  const apiRef = useGridApiContext();

  const handleExportSingleRow = () => {
    const exportOptions: GridCsvExportOptions = {
      // 仅导出当前行:通过 getRowsToExport 返回包含指定 rowId 的数组
      getRowsToExport: (api) => {
        const allRows = api.getAllRowIds();
        return allRows.filter((id) => id === rowId);
      },
      // 可选:隐藏 ID 列(如 rowId 是内部字段,无需导出)
      fields: ['name', 'email', 'status'], // 显式指定导出字段(推荐)
      // delimiter: ',', // 可选分隔符
      // fileName: `record-${rowId}.csv`, // 自定义文件名(需配合额外逻辑)
    };
    apiRef.current.exportDataAsCsv(exportOptions);
  };

  return (
    
  );
};

export default SingleRowExportButton;

✅ 步骤二:在 renderCell 中集成该按钮(以操作列为例)

// 在 DataGrid 的 columns 配置中
{
  field: 'actions',
  headerName: '操作',
  sortable: false,
  renderCell: (params) => (
    
  ),
},

⚠️ 注意事项与最佳实践

  • rowId 必须与 DataGrid 内部 id 类型一致:确保传入的 rowId 与 rows 数组中每项的 id 字段类型(string/number)完全匹配,否则 filter 将无法命中。
  • 字段控制更安全:强烈建议显式声明 fields 选项,避免因列配置变更导致意外字段泄露(如敏感 ID、内部状态等)。
  • 文件名定制需扩展逻辑:exportDataAsCsv 默认不支持动态 fileName。如需按行生成 record-123.csv,可结合 useCSVExport Hook 或原生 Blob + URL.createObjectURL 手动触发下载(进阶场景)。
  • 性能提示:getRowsToExport 在大数据量下仍高效,因其仅做 ID 过滤,不序列化全量数据。

✅ 总结

通过组合 useGridApiContext、exportDataAsCsv 和 getRowsToExport 选项,你无需引入第三方库,即可在任意交互点(按钮、菜单、快捷键)精准导出单条记录为 CSV。该方案完全兼容社区版,代码轻量、逻辑清晰,是 MUI X DataGrid 定制化导出的标准实践。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

338

2023.08.02

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

61

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.9万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

React核心原理新老生命周期精讲
React核心原理新老生命周期精讲

共12课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号