ant design V3 实现table表格 添加底部合计行

目录

因 4版本才有 Table.Summary api去实现合计行,那3版本怎么来实现这个功能呢?

实现思路:

完整代码


因 4版本才有 Table.Summary api去实现合计行,那3版本怎么来实现这个功能呢?

实现思路:

  1. 每次分页请求接口,都将接口返回的合计数据和表格的正常数据进行合并,这样数据的最后一条一直都是合计的数据
  2. table的columns的第一个通过索引设置,最后一行显示 '合计'
  3. 将table的pagination设置为false
  4. 使用Pagination组件控制分页

这样就不受table组件的pageSize的控制,导致显示不出合计行了

完整代码

import React, { useState, useEffect, useRef } from 'react'
import defaultPag from '@src/common/defaultPagination'
import { Table, Pagination } from 'antd'
import moment from 'moment'


function CallInReport () {
    const [ tableData, setTableData ] = useState([])
    const [ pagination, setPagination ] = useState(defaultPag({ isAdjust: false }))
    const [ loading, setLoading ] = useState(false)

    const queryTableData = async (query = {}) => {
        const apiParams = {
            ...query,
            pageNo: query.pageNo || 1,
            pageSize: query.pageSize || pagination.pageSize,
        }
        setLoading(true)
        const res = await ajax('xxx', apiParams)
        setLoading(false)
        let paginationNew = {
            ...pagination,
            current: +res.page.pageNo || 1,
            pageSize: +res.page.pageSize || pagination.pageSize,
            total: +res.page.totalSize,
        }

        setTableData([ ...res.records, res.total ])
        setPagination(paginationNew)
    }

    const columns = [
        {
            title: '日期',
            dataIndex: 'date',
            key: 'date',
            fixed: 'left',
            render: (text, record, index) => index === tableData.length - 1 ? '总计' : moment(text).format('YYYY-MM-DD'),
        },
    ]
    const paginationChange = (page, pageSize) => {
        const params = {
            pageNo: page,
            pageSize: pageSize,
        }
        queryTableData(params)
    }
    const showSizeChange = (current, size) => {
        const params = {
            pageNo: current,
            pageSize: size,
        }
        queryTableData(params)
    }

    return (
        <div>
            <Table
                rowKey={(record, index) => `${ index }`}
                columns={columns}
                loading={loading}
                scroll={{ x: 'max-content' }}
                dataSource={tableData}
                pagination={false}
                bordered
            />
            <div className='custom-pagination-container'>
                <Pagination
                    {...pagination}
                    onChange={paginationChange}
                    onShowSizeChange={showSizeChange}
                />
            </div>
        </div>
    )
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值