element table表格行列合并span-method,根据数据动态行列合并

表格行列合并需要用到 table的方法 span-method

在这里插入图片描述

根据数据来进行动态的行列合并,实例如下:

 <el-table
      :data="tableData"
      :span-method="objectSpanMethod" 
      style="width: 100%">
      <el-table-column
        prop="key"
        label="分类"
        width="180">
      </el-table-column>
      <el-table-column
        prop="id"
        label="编号"
        width="180">
      </el-table-column>
      <el-table-column
        prop="name"
        label="名称">
      </el-table-column>
    </el-table>
let data = [
	{ key:'test1', id:0, name:'xxx' },
	{ key:'test1', id:1, name:'xxx' },
	{ key:'test2', id:2, name:'xxx' },
	{ key:'test1', id:3, name:'xxx' },
	{ key:'test2', id:4, name:'xxx' },
	{ key:'test1', id:5, name:'xxx' },
]

我们要根据 key 进行列合并,将test1合并到一起,test2合并到一起

//先处理数据
let one = data.filter(item => item.key === 'test1')
let two= data.filter(item => item.key === 'test2')

//保证test1 在一堆,test2在一堆
tableData = one.concat(two)

//列合并方法
objectSpanMethod =({ row, column, rowIndex, columnIndex })=>{
	const { key } = row
        // test1 使用 rowIndex作为开始
        // test2 采用rowIndex - test1 长度开始
        let last = rowIndex - one.length
        if (columnIndex === 0) { //判断是否是第一列
          if(key === 'test1'){ //判断合并项 R1 R2
             if (rowIndex % one.length === 0) {
              return {
                rowspan: one.length, // 需要合并的行数
                colspan: 1
              }
            }else{ //不在范围内 直接返回默认
              return {
                rowspan: 0,
                colspan: 0
              }
            }
          }else if(key === 'test2'){
            if(last % two.length === 0){
              return {
                rowspan: two.length, // 需要合并的行数
                colspan: 1
              }
           }else{
            return {
              rowspan: 0,
              colspan: 0
            }
           }
          }  
        }
}

我们根据 key 进行列合并,按照合并规则 id 为0 1 3 5的数据合并到 test1 中,id为2 4的数据合并到test2中

在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 element 表格时,可以通过 `span-method` 属性来合并单元格。如果需要使用 `id` 来标识单元格,可以在 `span-method` 方法中进行判断并返回对应的 `rowspan` 和 `colspan` 值。 具体实现步骤如下: 1. 在表格中需要合并的单元格上添加 `id` 属性,例如:`<el-table-column label="姓名" prop="name" :span-method="nameSpanMethod" ><template slot-scope="scope">{{scope.row.name}}</template></el-table-column>`。 2. 在 `methods` 中定义 `nameSpanMethod` 方法,该方法接受两个参数:`{ row, column, rowIndex, columnIndex }`,分别表示当前单元格所在行数据,所在列数据,所在行索引和所在列索引。该方法需要根据需要合并的单元格的 `id` 进行判断并返回对应的 `rowspan` 和 `colspan` 值。 示例代码如下: ```html <template> <el-table :data="tableData"> <el-table-column label="姓名" prop="name" :span-method="nameSpanMethod"> <template slot-scope="scope">{{scope.row.name}}</template> </el-table-column> <el-table-column label="年龄" prop="age"></el-table-column> <el-table-column label="地址" prop="address"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { id: 1, name: '张三', age: 18, address: '北京市朝阳区' }, { id: 2, name: '李四', age: 22, address: '上海市浦东新区' }, { id: 3, name: '王五', age: 25, address: '广州市天河区' } ] }; }, methods: { nameSpanMethod({ row, column, rowIndex, columnIndex }) { if (row.id === 1 && columnIndex === 0) { // 合并第一行第一列和第二列 return { rowspan: 1, colspan: 2 }; } return { rowspan: 1, colspan: 1 }; } } }; </script> ``` 运行以上代码,可以看到第一行第一列和第二列被合并成了一个单元格,并且在第一列中添加了 `id="name"` 属性,用于标识需要合并的单元格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值