react antd Table动态合并单元格

react antd Table动态合并单元格

1、实现效果图

在这里插入图片描述

2、实现方法
/**
  * 单元格合并处理
  * @param text 当前单元格的值
  * @param data 当前分页所有数据
  * @param key 当前列的dataIndex
  * @param index 当前数据所在下标
  * @returns {number} 待合并单元格数量
  */
  const mergeCells = (text :any, data:any, key:any, index:any)=> {
    // 上一行该列数据是否一样
    if (index !== 0 && text === data[index - 1][key]) {
      return 0
    }
    let rowSpan = 1
    // 判断下一行是否相等
    for (let i = index + 1; i < data.length; i++) {
      if (text !== data[i][key]) {
        break
      }
      rowSpan++
    }
    return rowSpan
  }
3、方法在渲染时的应用
const columns = [
{
      title: '报警ID',
      dataIndex: 'alarmId',
      key: 'alarmId',
      width: 120,
      ellipsis: true,
      sorter: (a: any, b: any) => a.alarmId - b.alarmId,//添加排序效果
      //value:当前行该单元格的值 record 当前行的值  index:当前行的行号
      render: (value:any, record:any, index:any) => {
        const obj = {
          children: value !== null ? value : '',
          props: {
            rowSpan: 1 
          }
        }
        obj.props.rowSpan = mergeCells(value, coilAlarmMsgs, 'alarmId', index)
        return obj
      }
    },
  ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值