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

如何在React版AG Grid中实现单元格同时跨2行2列?

如何在React版AG Grid中实现单元格同时跨2行2列?

嘿,我懂你这种找不到组合示例的头疼!官方文档里行跨、列跨的单独例子一抓一大把,但把俩放一块儿的确实少见。我帮你调整下代码,实现同时跨2行2列的效果,顺便给你拆解下关键逻辑~

要在AG Grid里实现单元格同时跨行跨列,核心是要同时配置列跨度(colSpan)和行跨度(rowSpan),还要处理好其他被覆盖单元格的隐藏(通过设置colSpan: 0或者rowSpan: 0),确保不会出现布局错乱。

给你调整后的可运行代码:

import { useState } from "react";
import { AgGridReact } from "ag-grid-react";

const SpanningGrid = () => {
  const [rowData] = useState([
    { id: 1, field1: "Test" },
    { id: 2, field1: "Test" },
    { id: 3, field1: "Normal" }, // 加一行普通数据方便对比效果
  ]);

  const gridOptions = {
    columnDefs: [
      {
        headerName: "Col1",
        field: "field1",
        spanRows: true, // 启用行跨功能开关
        // 列跨度:符合条件的单元格跨2列
        colSpan: (params) => {
          const isTargetCell = params.data.field1 === "Test" && params.node.rowIndex === 0;
          return isTargetCell ? 2 : 1;
        },
        // 行跨度:符合条件的单元格跨2行
        rowSpan: (params) => {
          const isTargetCell = params.data.field1 === "Test" && params.node.rowIndex === 0;
          return isTargetCell ? 2 : 1;
        },
        // 可选:给跨越多的单元格加个样式,更直观
        cellStyle: (params) => {
          const isTargetCell = params.data.field1 === "Test" && params.node.rowIndex === 0;
          return isTargetCell ? { backgroundColor: "#f0f8ff", textAlign: "center" } : {};
        },
      },
      {
        headerName: "Col2",
        // 处理被覆盖的单元格:前两行的Col2直接隐藏
        colSpan: (params) => {
          if (params.data.field1 === "Test" && params.node.rowIndex <= 1) {
            return 0; // 返回0表示隐藏该单元格
          }
          return 1;
        },
      },
      {
        headerName: "Col3", // 新增普通列,方便观察整体布局
        field: "field1",
      },
    ],
    enableCellSpan: true, // 全局开关:必须开启才能让单元格跨度生效
  };

  return (
    <div style={{ height: 300, width: 600 }}>
      <AgGridReact gridOptions={gridOptions} rowData={rowData} />
    </div>
  );
};

export default SpanningGrid;

关键逻辑拆解:

  1. 全局开关必须开:enableCellSpan: true是所有单元格跨度功能的基础,没开的话啥效果都出不来;
  2. 目标单元格双跨度配置:在要跨行跨列的列(Col1)里,通过colSpan返回2实现跨2列,rowSpan返回2实现跨2行,同时用rowIndex和数据内容锁定目标单元格(这里是第一行的Test单元格);
  3. 被覆盖单元格隐藏:前两行的Col2被目标单元格覆盖了,所以通过colSpan: 0让它们隐藏,避免布局重叠;
  4. 可选样式优化:给跨越多的单元格加个背景色和居中,能更直观看到跨度效果,实际项目里可以根据自己的UI需求调整。

如果你的数据是分组式的重复内容(比如多组相同field1的行),还可以把rowIndex的判断改成基于数据分组的逻辑,比如对比当前行和上下行的field1值,动态计算跨度,适配更多场景~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:08:06