vue使用elementui合并单元格,并合并单元格中的值

看文档:

1、先在标签内引入对应的函数:span-method="objectSpanMethod"

  <el-table
        style="margin-top: 20px"
        :span-method="objectSpanMethod"
        :data="info.points"
        :height="500"
        v-loading="dialoading"
        :row-class-name="$tabRowClassName"
      >

 

2、 写对应的合并单元格函数

踩坑啦,看文档的时候,else中的 rowspan,colspan,两个值都是0,但0会让其他单元格的值消失,所以要写成1

然后合并好几行单元格不能只写第一个的索引值,要用或运算符,三个都写上

objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 2) {
        if (rowIndex == 5 || rowIndex == 6 || rowIndex === 7) {
          return {
            rowspan: 3,
            colspan: 1,
          };
        } else {
          return {
            rowspan: 1,
            colspan: 1,
          };
        }
      }
    },

接下来,可以合并单元格内的数值,可以通过scope.$index获取当前项的索引,然后通过索引获取值去加减

当时不知道scope.$index可以获取当前项索引,所以合并值的时候,无从下手

<template slot-scope="scope">
            <!-- {{scope.$index!=5?scope.row.t: }} -->
            {{
              scope.$index != 5
                ? scope.row.t
                : info.points[scope.$index].t +
                  info.points[scope.$index + 1].t +
                  info.points[scope.$index + 2].t
            }}
          </template>

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要动态合并Element UI表格单元格,可以使用表格的`span-method`属性。该属性接受一个方法作为参数,用于计算表格每个单元格应该跨越多少行或列。 下面是一个示例代码,演示了如何动态合并表格单元格: ```html <template> <el-table :data="tableData" :span-method="handleSpanMethod"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, address: '北京' }, { name: '李四', age: 20, address: '上海' }, { name: '王五', age: 22, address: '广州' }, { name: '赵六', age: 24, address: '深圳' } ] } }, methods: { handleSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 0) { // 如果是第一列,则判断该单元格是否和上一行的单元格内容相同 if (rowIndex > 0 && row.name === this.tableData[rowIndex - 1].name) { // 如果相同,则返回一个对象,设置rowspan属性为0,表示该单元格不需要显示 return { rowspan: 0, colspan: 1 } } else { // 如果不同,则返回一个对象,设置rowspan属性为该单元格所在行相同内容单元格的数量 let count = 1 for (let i = rowIndex + 1; i < this.tableData.length; i++) { if (row.name === this.tableData[i].name) { count++ } else { break } } return { rowspan: count, colspan: 1 } } } else { // 如果不是第一列,则返回一个对象,设置colspan属性为0,表示该单元格不需要显示 return { rowspan: 0, colspan: 0 } } } } } </script> ``` 在上述代码,我们定义了一个`handleSpanMethod`方法,用于计算表格每个单元格应该跨越多少行或列。该方法接受一个参数,包含以下属性: - `row`:当前单元格所在行的数据对象 - `column`:当前单元格所在列的配置对象 - `rowIndex`:当前单元格所在行的索引 - `columnIndex`:当前单元格所在列的索引 在`handleSpanMethod`方法,我们首先判断当前单元格是否为第一列,如果是第一列则需要动态合并单元格。我们使用条件语句判断该单元格是否和上一行的单元格内容相同,如果相同则返回一个对象,设置`rowspan`属性为0,表示该单元格不需要显示;如果不同则返回一个对象,设置`rowspan`属性为该单元格所在行相同内容单元格的数量。如果当前单元格不是第一列,则返回一个对象,设置`colspan`属性为0,表示该单元格不需要显示。 最后,在表格使用`span-method`属性,绑定`handleSpanMethod`方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值