vue3.x elementUi el-table 表格合并span-method

tableData.value为表格数据, "firstName"为需要合并的字段

<el-table
        :data="tableData"
        border
        isMerge: true
        :span-method="listSpanMethod"
        :cell-style="listCellStyle"
      >
</el-table>

const listSpanMethod = ({ row, column, rowIndex, columnIndex }) => {
  if (columnIndex === 0) {
    let spanArr = getSpanArr(tableData.value, "firstName");

    const _row = spanArr[rowIndex];
    const _col = _row > 0 ? 1 : 0;
    return {
      rowspan: _row,
      colspan: _col,
    };
  }
};
// 处理合并行的数据
const getSpanArr = (data, spanKey) => {
  let spanArr = [];
  let pos = "";
  for (let i = 0; i < data.length; i++) {
    if (i === 0) {
      spanArr.push(1);
      pos = 0;
    } else {
      // 判断当前元素与上一个元素是否相同
      if (data[i][spanKey] === data[i - 1][spanKey]) {
        spanArr[pos] += 1;
        spanArr.push(0);
      } else {
        spanArr.push(1);
        pos = i;
      }
    }
  }
  return spanArr;
};

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue2 中使用 Element UI 的 el-table 组件时,有一个非常实用的方法叫做 span-method,可以用来合并单元格,将具有相同值的单元格合并成一个大单元格,使表格更加美观,同时也方便用户查看。 span-method 接受一个回调函数作为参数,回调函数的参数有两个,分别是 row 和 column,表示当前单元格所在的行和列。回调函数需要返回一个对象,对象的属性有两个,分别是 rowspan 和 colspan,表示需要合并的行数和列数。 具体使用方法如下: 1. 在 el-table 组件中添加 span-method 属性,值为回调函数的名称或函数表达式。 ``` <el-table :data="tableData" :span-method="mergeCell"> // ... </el-table> ``` 2. 实现回调函数 mergeCell,返回需要合并的行数和列数。 ``` methods: { mergeCell(row, column) { if (column.property === 'name') { if (row.index % 2 === 0) { return { rowspan: 2, colspan: 1 }; } else { return { rowspan: 0, colspan: 0 }; } } } } ``` 上面的代码实现了一个简单的合并单元格的效果,将表格中每两行的 name 列合并成一个单元格。具体实现方式是,如果是偶数行,则返回需要合并的行数为 2,列数为 1;如果是奇数行,则返回需要合并的行数为 0,列数为 0,表示该单元格不需要合并。 需要注意的是,如果需要合并的单元格中有其他单元格,则需要将需要合并的单元格的值设置为 null,否则会出现合并单元格后其他单元格的值无法显示的问题。 以上就是 span-method 方法的详解,希望能帮助到你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值