今天记录一下elementUI 相同元素合并行

把id相同的单元格进行合并
数据为

      tableData: [{id: '1',name: '王小虎',amount1: '234',amount2: '3.2',amount3: 10}, {id: '1',name: '王小虎',amount1: '165',amount2: '4.43',amount3: 12}, {id: '1',name: '王小虎',amount1: '324',amount2: '1.9',amount3: 9}, {id: '2',name: '王小虎',amount1: '621',amount2: '2.2',amount3: 17}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '5',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '5',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}]

话不多说
直接上代码
需要两个方法

  /*这个方法是控制单元格的返回值是一个对象例如:返回return {rowspan: 2,colspan: 1}是把当前的一个单元格和正下方的单元格合并且下一个单元格要返回return {rowspan: 0,colspan: 0}这是API给的我发现返回return {rowspan: 0,colspan: 1}也是可以的那合并单元格就十分容易了前提是数据已经根据id进行排序假如id为3的有四个数据只需要返回[4,1][0,1][0,1][0,1]即可用下面的setrowspans方法进行处理即可*/objectSpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {return {rowspan: row.rowspan,colspan: 1}}},
    setrowspans() {// 先给所有的数据都加一个v.rowspan = 1this.tableData.forEach(v => {v.rowspan = 1})// 双层循环for (let i = 0; i < this.tableData.length; i++) {// 内层循环,上面已经给所有的行都加了v.rowspan = 1// 这里进行判断// 如果当前行的id和下一行的id相等// 就把当前v.rowspan + 1// 下一行的v.rowspan - 1for (let j = i + 1; j < this.tableData.length; j++) {if (this.tableData[i].id === this.tableData[j].id) {this.tableData[i].rowspan++this.tableData[j].rowspan--}}// 这里跳过已经重复的数据i = i + this.tableData[i].rowspan - 1}}

完整代码如下

<template><div class="wscn-http404-container"><el-table:data="tableData":span-method="objectSpanMethod"borderstyle="width: 100%; margin-top: 20px"><el-table-columnprop="id"label="ID"width="180"/><el-table-columnprop="name"label="姓名"/><el-table-columnprop="amount1"label="数值 1(元)"/><el-table-columnprop="amount2"label="数值 2(元)"/><el-table-columnprop="amount3"label="数值 3(元)"/></el-table></div>
</template><script>export default {data() {return {tableData: [{id: '1',name: '王小虎',amount1: '234',amount2: '3.2',amount3: 10}, {id: '1',name: '王小虎',amount1: '165',amount2: '4.43',amount3: 12}, {id: '1',name: '王小虎',amount1: '324',amount2: '1.9',amount3: 9}, {id: '2',name: '王小虎',amount1: '621',amount2: '2.2',amount3: 17}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '3',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '5',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}, {id: '5',name: '王小虎',amount1: '539',amount2: '4.1',amount3: 15}]}},created() {this.setrowspans()},methods: {/*这个方法是控制单元格的返回值是一个对象例如:返回return {rowspan: 2,colspan: 1}是把当前的一个单元格和正下方的单元格合并且下一个单元格要返回return {rowspan: 0,colspan: 0}这是API给的我发现返回return {rowspan: 0,colspan: 1}也是可以的那合并单元格就十分容易了前提是数据已经根据id进行排序假如id为3的有四个数据只需要返回[4,1][0,1][0,1][0,1]即可用下面的setrowspans方法进行处理即可*/objectSpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {return {rowspan: row.rowspan,colspan: 1}}},setrowspans() {// 先给所有的数据都加一个v.rowspan = 1this.tableData.forEach(v => {v.rowspan = 1})// 双层循环for (let i = 0; i < this.tableData.length; i++) {// 内层循环,上面已经给所有的行都加了v.rowspan = 1// 这里进行判断// 如果当前行的id和下一行的id相等// 就把当前v.rowspan + 1// 下一行的v.rowspan - 1for (let j = i + 1; j < this.tableData.length; j++) {if (this.tableData[i].id === this.tableData[j].id) {this.tableData[i].rowspan++this.tableData[j].rowspan--}}// 这里跳过已经重复的数据i = i + this.tableData[i].rowspan - 1}}}
}</script><style lang="scss" scoped>
</style>

elementUI 相同元素合并行相关推荐

  1. elementUI 表格合并单元格-多层级-合并行

    elementUI 表格合并单元格-多层级-合并行 需求:使用vue + elementUI 实现如下表格: 省份 城市 区域 人口 贵州 遵义 汇川区 100 红花岗区 100 播州区 100 贵阳 ...

  2. sed行处理详解(交换行,合并行,删除行等)

    1.合并行 zj@zj:~/Script/blog_script$ cat test1 1 2 3 4 合并上下两行 zj@zj:~/Script/blog_script$ sed '$!N;s/\n ...

  3. java合并sheet行_java poi Excel循环合并行

    //Java poi 实现循环合并行,还是第一次遇到这种问题 //在网上查了很多资料,都不是自己想要的 //以下为自己研究后,写的一点东西,给大家分享,希望对大家能有思路上的启发,也希望大家能提出宝贵 ...

  4. Ant Design之表格动态合并行

    在web开发中,表格的行合并是一个很常见的需求.antd也提供了这种功能,但是文档中的示例代码却和我想象中的相差甚远,如下所示,它是通过一种很笨的办法实现的行合并.这样当表格的数据源是动态获取的,我们 ...

  5. Excel按某一列或多列合并行

    如果以某一列或者几列为基准,只要这一列或多列的数据相同就合并这些行的数据,不管这些行的其他列的数据是否相同.例如下图: 比如按登录名和地区两列合并行.希望最终要得到的结果如下: (注,无需比对的其他列 ...

  6. 【editplus经常用的快捷键】Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行

    Editplus 选中一行: ctrl+r Editplus 复制一行: ctrl+r选择行,然后ctrl+c复制. 复制一行到下一行中:Editplus有:Ctrl+j 复制上一行的一个字符到当前行 ...

  7. java操作导出Excel(jxl导出WritableWorkbook)jxl合并单元格,单元格的设置,单元格居中、字体、大小、换行、合并行,列宽、自动换行撑起高度、指定特定字符串样式等

    new WritableCellFormat().setWrap(true);//通过调整宽度和高度自动换行 1.1     需求描述 MS的电子表格(Excel)是Office的重要成员,是保存统计 ...

  8. rowspan 动态变化_rowspan相同值合并 怎么动态的rowspan合并行

    php 怎么控制表格,相同数据合并显示一行 Html中colspan属性和rowspan属性合并后该单元格的一个是合并行.一个合并列 colspan=2就代表合并他和他同一列的后一个单元格 rowsp ...

  9. antd Table合并行 rowSpan

    实现这种效果,同一种知识点类型合并行. <Tablecolumns={columns}// dataSource={dataSource}dataSource={createNewArr(dat ...

  10. poi判断合并行_POI实战2——实战代码

    一.实战整理后的代码如下 @RequestMapping("/batchExport")public void batchExport(HttpServletResponse re ...

最新文章

  1. Java利用Qrcode生成二维码
  2. php框架where条件使用,where条件
  3. 消除warning方法
  4. 无法打开 源 文件 pch.h_outlook 客户端数据文件无法打开,如何解决?
  5. [NOIP1999] 普及组
  6. 玩家游戏账号被封十年,解封后一进游戏傻眼了:比当年还火?
  7. python请输入_不断提示用户输入Python
  8. android 更新平台,Android更新平台架构方案
  9. 【es】如何使用 Kerberos 确保您 Elasticsearch 集群的安全
  10. 多链路负载均衡及冗余
  11. 第二周函数-的基本格式:
  12. 这几个网站藏着一代人的科技童年……
  13. cocos2d-js飞机项目:飞机爆炸效果
  14. 商业数据分析-战略分析读后感
  15. 安卓逆向小案例——阿里系某电影票务APP加密参数还原-Unidbg篇
  16. 养殖专家告诉你在农村养啥赚钱
  17. 路边电动车快充多少安?知识介绍
  18. Codeforces Round #737 (Div. 2)---C. Moamen and XOR
  19. 1217: 统计立方数
  20. springboot整合druid 监控sql

热门文章

  1. 十年测试老司机带你应对68道面试题---文章转载自 TesterHome
  2. 当老师退出伽卡他卡教师端,但是还没下课时,程序一直提示连接失败真的很烦,下面和大家分享一下怎么退出伽卡他卡
  3. MATLAB 绘制平行六面体
  4. win中使用labelImg标注图片
  5. vue form表单验证清除
  6. make_blobs方法的使用
  7. ov7725摄像头--图像中间亮四周暗
  8. python名片打印程序_Python的格式化输出--制作名片
  9. 如何用 Telemetry 测试移动 APP H5性能?
  10. 台式计算机如何拆硬盘,台式机如何更换硬盘