关于element组件table合并单元格数据偏移问题

// 页面布局 合并单元格逻辑 :span-method = 'objectSpanMethod'
<el-table :header-cell-style="{background: '#edfdf9'}" :span-method="objectSpanMethod" :data="listNum" border style="width: 100%; margin-top: 0px">
  <el-table-column prop="itemName" label="项目">
  </el-table-column>
  <el-table-column prop="itemScore" label="成绩">
  </el-table-column>
  <el-table-column prop="itemResult" label="得分">
  </el-table-column>
</el-table>

 最近项目需要合并table的除表头外的第一行的第二列 + 除表头外的第二行的第二列 ,看了一下element文档 Element - The world's most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN/component/installation ,合并单元格完成后发现数据会偏移导致显示不正确,百度半天也测试了好多方法都没有达到想要的结果,虽然没效果但是也总结出了前人的一些经验,最终想到隐藏原有数据的办法,试了一下问题解决了,上代码:

 // 合并单元格 rowIndex=行数  columnIndex=列数  
 // 这里是合并table的除表头外的第一行的第二列 + 除表头外的第二行的第二列 
 // 注意列数和行数从 0 开始
    objectSpanMethod ({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 1 && rowIndex == 0) {
        let rowspan = 2
        let colspan = 1
        return { rowspan, colspan }
      }
    // 解决偏移的重要代码
    // 重点在 else if 判断必须加因为合并单元格数据会出现偏移、
    // 否则如果是 第二行 的 第二列 那么隐藏原有第二行 的 第二列的数据使他隐藏
      else if (rowIndex === 1 && columnIndex == 1) {
        return {
          rowspan: 0,  
          colspan: 0  
        }
      }
    },

总结:虽然有时候遇到的问题和前人的问题不同达不到自己想要的结果,但是也要认真思考前人的逻辑从而总结经验,生成自己的一套解决问题的办法达到自己想要的结果。欢迎各位大佬的不同看法,如有更好的请分享一下会给您点赞的

各位程序猿,看了如果好用就点个赞呗!!同时不懂的欢迎提问我们共同进步

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-tableElement UI组件库中的表格组件,可以用于展示和处理大量的数据。 要实现el-table的列合并,可以使用scoped slot来实现。具体步骤如下: 1. 首先,在定义el-table组件时,需要在表头中定义需要合并的列。可以使用el-table-column组件,设置prop属性为当前列的数据字段,并设置label属性为列的标题。 2. 在合并列需要展示数据的地方,使用scoped slot来自定义当前列的显示内容。可以使用<template slot-scope="scope">来定义slot,并在其中使用scope.row来获取当前行的数据。 3. 在自定义的scoped slot中,根据当前行的数据以及需要进行合并的条件,通过判断并设置rowspan和colspan属性来实现列的合并。例如,可以使用v-if来判断条件,并使用scope.$index来获取当前行的索引。 下面是一个示例代码: ```html <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="成绩"> <template slot-scope="scope"> <template v-if="scope.$index === 0 || scope.row.age !== tableData[scope.$index-1].age"> <span :rowspan="getRows(scope.row.age)">{{ scope.row.score }}</span> </template> </template> </el-table-column> </el-table> ``` 在上面的代码中,通过判断当前行的年龄和上一行的年龄是否相同来确定是否需要合并列,通过getRows方法来计算合并的行数。 以上就是使用el-table实现列合并的简单示例,通过使用scoped slot以及自定义的逻辑判断,可以根据具体的需求来进行灵活的列合并操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值