Вы хотите создать по 2 вложенных строки в каждой строке, но только для некоторых столбцов. вы можете использовать для этого rowspan
.
вы можете дублировать свои строки (row1-row1-row2-row2-row3-row3-...
) и помещать в них значения вложенных строк (row1_subrow1-row1_subrow2-row2_subrow1-row2_subrow2-...
), а затем использовать rowspan
для столбцов, которые вы хотите разверните (например, раздел и имя на вашем изображении), разверните нечетные строки и сверните четные строки для этих столбцов.
полный код: ( Codesandbox Demo )
import React from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { Table } from "antd";
let multiRowRender = (value, row, index) => {
const obj = {
children: value,
props: {}
};
if (index % 2 === 0) {
obj.props.rowSpan = 2;
}
if (index % 2 === 1) {
obj.props.rowSpan = 0;
}
return obj;
};
const columns = [
{
title: "Number",
dataIndex: "number"
},
{
title: "Issue",
dataIndex: "issue"
},
{
title: "Name",
dataIndex: "name",
render: multiRowRender
},
{
title: "Section",
dataIndex: "section",
render: multiRowRender
}
];
let data = [
{
key: "1",
name: "John Brown",
issues: [32, 100],
numbers: [18889898989, 545054],
section: "sec 1"
},
{
key: "2",
name: "Jim Green",
issues: [42, 50],
numbers: [18889898888, 1420054],
section: "sec 2"
}
];
let data2 = [];
data.forEach(d => {
data2.push({ ...d, issue: d.issues[0], number: d.numbers[0] });
data2.push({
...d,
issue: d.issues[1],
number: d.numbers[1],
key: d.key + "-row2"
});
});
data = data2;
ReactDOM.render(
<Table columns={columns} dataSource={data} bordered />,
document.getElementById("container")
);
Демоверсия Codesandbox