ANTD表Rowspan在表中显示数据

发布于 2025-02-05 08:56:50 字数 3722 浏览 0 评论 0原文

大家好,我正在尝试在ANTD表中显示JSON数据,但我不确定如何在此处使用Rowspan或Colspan将整个数据渲染到一个单元格中。

const columns = [
{
    title: 'Package Name',
    dataIndex: 'packageName',
    key: 'packageName',
    align: 'center',
},

{
    title: 'Operator',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ operatorCategory, operatorName }) => (
            <div className="row">
                <p>{operatorName}</p>
                <p>{`(${operatorCategory})`}</p>
            </div>
        ));
    },
    align: 'center',
},

{
    title: 'API Slab',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ apiSlabs }) =>
            apiSlabs.map(({ min, max }) => (
                <div className="row">{`[${min}-${max}]`}</div>
            ))
        );
    },
    align: 'center',
},
{
    title: 'Commission',
    children: [
        {
            title: 'Amount',
            dataIndex: 'providerOperatorCommissionInfos',
            key: 'providerOperatorCommissionInfos',
            render: (operatorInfo) => {
                return operatorInfo.map(({ apiSlabs }) =>
                    apiSlabs.map(({ commission, amountType }) => (
                        <div className="row">
                            {commission}{' '}
                            {(amountType === 'FIXED' && '₹') ||
                                (amountType === 'PERCENT' && '%')}
                        </div>
                    ))
                );
            },
            align: 'center',
        },
        {
            title: 'C/S',
            dataIndex: 'providerOperatorCommissionInfos',
            key: 'providerOperatorCommissionInfos',
            render: (operatorInfo) => {
                return operatorInfo.map(({ apiSlabs }) =>
                    apiSlabs.map(({ commissionType }) => (
                        <div className="row">{commissionType[0]}</div>
                    ))
                );
            },
            align: 'center',
        },
    ],
},
{
    title: 'GST',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ apiSlabs }) =>
            apiSlabs.map(({ gst }) => <div className="row">{gst}</div>)
        );
    },
    align: 'center',
},
{
    title: 'TDS',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ apiSlabs }) =>
            apiSlabs.map(({ tds }) => <div className="row">{tds}</div>)
        );
    },
    align: 'center',
},
{
    title: 'Actions',
    dataIndex: 'packageName',
    key: 'packageName',
    render: (packageName) => (
        <div>
            <EditOutlined />
            <DeleteOutlined style={{ marginLeft: 15 }} />
        </div>
    ),
    align: 'center',
},

];

在DataSource中,我通过了整个JSON
[所需表:] “

[i正在获得的表] “

这是codesandbox链接: https://codesandbox.io/s/brokent-pond-0m5svs?file=/src/app/app.js:192-2623

Hey guys I am trying to display a JSON data in antd table but I am not sure how can i use the rowSpan or colSpan here as its rendering the whole data into one cell .

const columns = [
{
    title: 'Package Name',
    dataIndex: 'packageName',
    key: 'packageName',
    align: 'center',
},

{
    title: 'Operator',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ operatorCategory, operatorName }) => (
            <div className="row">
                <p>{operatorName}</p>
                <p>{`(${operatorCategory})`}</p>
            </div>
        ));
    },
    align: 'center',
},

{
    title: 'API Slab',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ apiSlabs }) =>
            apiSlabs.map(({ min, max }) => (
                <div className="row">{`[${min}-${max}]`}</div>
            ))
        );
    },
    align: 'center',
},
{
    title: 'Commission',
    children: [
        {
            title: 'Amount',
            dataIndex: 'providerOperatorCommissionInfos',
            key: 'providerOperatorCommissionInfos',
            render: (operatorInfo) => {
                return operatorInfo.map(({ apiSlabs }) =>
                    apiSlabs.map(({ commission, amountType }) => (
                        <div className="row">
                            {commission}{' '}
                            {(amountType === 'FIXED' && '₹') ||
                                (amountType === 'PERCENT' && '%')}
                        </div>
                    ))
                );
            },
            align: 'center',
        },
        {
            title: 'C/S',
            dataIndex: 'providerOperatorCommissionInfos',
            key: 'providerOperatorCommissionInfos',
            render: (operatorInfo) => {
                return operatorInfo.map(({ apiSlabs }) =>
                    apiSlabs.map(({ commissionType }) => (
                        <div className="row">{commissionType[0]}</div>
                    ))
                );
            },
            align: 'center',
        },
    ],
},
{
    title: 'GST',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ apiSlabs }) =>
            apiSlabs.map(({ gst }) => <div className="row">{gst}</div>)
        );
    },
    align: 'center',
},
{
    title: 'TDS',
    dataIndex: 'providerOperatorCommissionInfos',
    key: 'providerOperatorCommissionInfos',
    render: (operatorInfo) => {
        return operatorInfo.map(({ apiSlabs }) =>
            apiSlabs.map(({ tds }) => <div className="row">{tds}</div>)
        );
    },
    align: 'center',
},
{
    title: 'Actions',
    dataIndex: 'packageName',
    key: 'packageName',
    render: (packageName) => (
        <div>
            <EditOutlined />
            <DeleteOutlined style={{ marginLeft: 15 }} />
        </div>
    ),
    align: 'center',
},

];

in dataSource i have passed the whole JSON
[desired table:]1

[the table I am getting]2

here is the codeSandbox link : https://codesandbox.io/s/broken-pond-0m5svs?file=/src/App.js:192-2623

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文