ag grid 本身不支持原生行列转置,需通过自定义数据转换函数将原始行数据重构为列驱动结构,并动态生成对应列定义,再传入 ag grid 渲染。本文提供完整、可运行的实现方案与关键注意事项。
在 AG Grid 中实现“行列互换”(即数据转置),本质是将原始的 每行代表一条记录 的结构(如汽车品牌、型号、价格),转换为 每行代表一个字段名、每列代表原数据中的一条记录的新结构。由于 AG Grid 并未内置 transpose 功能,我们必须在渲染前对数据进行预处理。
import React, { useState } from 'react';
import { AgGridReact } from 'ag-grid-react';
import 'ag-grid-community/styles/ag-grid.css';
import 'ag-grid-community/styles/ag-theme-alpine.css';
const App = () => {
const [rowData] = useState([
{ make: "Toyota", model: "Celica", price: 35000 },
{ make: "Ford", model: "Mondeo", price: 32000 },
{ make: "Porsche", model: "Boxster", price: 72000 }
]);
const [columnDefs] = useState([
{ field: 'make' },
{ field: 'model' },
{ field: 'price' }
]);
// ? 数据转置函数:将 [{a:1,b:2}, {a:3,b:4}] → [{name:'a',0:1,1:3}, {name:'b',0:2,1:4}]
const transposeData = (data, columns) => {
const colNames = columns.map(col => col.field);
return colNames.map(colName => {
const row = { name: colName };
data.forEach((item, idx) => {
row[idx] = item[colName];
});
return row;
});
};
const transposedData = transposeData(ro
wData, columnDefs);
const transposedColumns = [
{ field: 'name', headerName: '', suppressHeaderMenuButton: true, lockPinned: true, width: 120 },
...rowData.map((_, idx) => ({
field: idx.toString(),
headerName: `Row ${idx + 1}`, // 可选:自定义列头文字(如“Toyota”、“Ford”)
width: 150,
cellStyle: { textAlign: 'center' as const }
}))
];
return (
);
};
export default App;const transposedData = useMemo(() => transposeData(rowData, columnDefs), [rowData, columnDefs]);
通过上述方法,你即可在 AG Grid 中稳定、清晰地呈现转置后的表格视图——既保持了 AG Grid 的高性能与丰富功能,又灵活满足了特定业务场景下的展示需求。
# css
# react
# app
# 字符串
# Length
# 对象
# 重构
# 字段名
# 自定义
# 原始数据
# 遍历
# 可在
# 不支持
# 可选
# 应在
# 可将
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11怎么关闭任务栏小组件_Windows11隐藏任务栏天气图标
Win11怎么更改电脑密码_Windows 11修改本地账户密码【步骤】
如何使用Golang写入二进制文件_Golang io Write二进制写入示例
Win11怎么开启窗口对齐助手_Windows11系统多任务处理设置
c++ unordered_map怎么用 c++哈希表用法【教程】
如何在Golang中优化文件读写性能_使用缓冲和并发处理
全球各国上班时间表外贸邮件时间
Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】
如何用列表一次性对 DataFrame 的指定列应用字典映射
Win10怎样清理C盘Steam游戏缓存_Win10清理Steam游戏缓存步骤【步骤】
Win10文件历史记录怎么用 Win10开启自动备份文件教程【防丢】
Windows 11如何开启文件夹加密(EFS)_Windows 11文件属性中加密内容以保护数据
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
mac怎么右键_MAC鼠标右键设置与触控板手势技巧【入门】
PythonPandas数据分析项目教程_时间序列透视表应用
如何使用Golang sort排序切片_Golang sort排序方法示例
php打包exe如何加密代码_防反编译保护方法【技巧】
c++中如何对数组进行排序_c++数组排序算法汇总
Win11时间不对怎么同步_Win11自动校准互联网时间【设置】
php本地部署支持nodejs吗_php与nodejs混合开发环境搭建教程【教程】
Win11怎么更改盘符_Win11磁盘管理修改驱动器号【步骤】
php中常量能用::访问吗_类常量与作用域操作符使用场景【汇总】
Mac如何调整Dock栏大小和位置_Mac程序坞个性化设置
Mac如何整理桌面文件_Mac使用堆栈功能一键整理
windows系统找不到无线网络怎么办_windows WLAN适配器故障排查
Python抽象类与接口设计_规范说明【指导】
Win11怎么设置默认终端应用_Windows11开发者选项终端
Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】
如何在 Django 中修改用户密码后保持会话不丢失
如何在同包不同文件中正确引用 Go 结构体
php下载安装选zip还是msi格式_两种安装包对比【教程】
如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类
Windows如何查看和管理已安装的字体?(字体文件夹)
PHP怎么接收前端传的时间戳_处理时间戳参数转换技巧汇总【指南】
如何使用Golang指针与接口结合_实现方法调用和动态类型
Go语言中slice追加操作的底层共享机制详解
Windows10怎么查看硬件信息_Windows10硬件信息查询方法【指南】
Windows如何设置登录时的欢迎屏幕背景?(锁屏界面)
Windows蓝屏BAD_POOL_HEADER故障详解_蓝屏池损坏错误修复指南
Win11如何设置系统语言_Win11系统语言切换教程【攻略】
Windows10蓝屏SYSTEM_SERVICE_EXCEPTION_Win10驱动冲突排查
php485在php5.6下能用吗_php485旧版本兼容性问题说明【详解】
Win11怎么更改电脑名称_Windows 11修改计算机名操作指南【步骤】
Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】
如何开启Windows的远程服务器管理工具(RSAT)?(管理服务器)
C++如何使用std::transform批量处理容器元素?(代码示例)
c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】
Win11怎么解压RAR文件 Win11自带解压功能使用方法
Win11怎么关闭搜索历史 Win11清除搜索框最近记录【隐私】
如何有效拦截拼接式恶意域名的垃圾信息
2025-12-31
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。