前言
原博客地址
在使用element-ui 的表格式涉及到了单元格合并问题,实际工作中数据多是从后台获取的,很显然数据不是一成不变的,所以就要根据数据的变化动态的合并单元格,动态动态动态,我TM不会啊~。~,尝试合并一直出现这样那样的问题,不会还这么多借口~~渣渣~~
去问了下度娘,发现类似问题不是很多,这特么不正常啊,果然是我太渣o(╥﹏╥)o ,但总算找到两个总结记录下吧,万一忘了~~~~ 好了,切入正题:
效果(一图胜百言)
单元格合并
场景:
例如某个版本下对应多行数据,这就不免就涉及到了单元格合并
大致思路:
- 以版本段为例(每个版本下有多条数据),为每一个版本下的 每一行 数据中都添加上对应的版本数据(版本字段)
- 设定一个数组来存放要合并的格数,同时还要设定一个变量来记录,当版本变化时数据的索引
- 遍历表格数据
UI层
1 | // span-method绑定的为合并单元格的方法 |
逻辑层
处理数据(重点)
1 | // 设定一个数组来存放要连续合并的格数,同时还要设定一个变量来记录,当时间段不同时数据的索引 |
合并
1 | // 单元格合并 |
高亮显示
场景:
合并完单元格后,假定此时某个版本对应的多行数据,鼠标放上其中的某一行时,只是该行高亮显示,而不是高亮显示所有合并行(所以要解决下)
UI层
1 | // 绑定element-ui里的鼠标进入和离开单元格的方法 |
逻辑层
处理数据(重点)
1 | // 遍历表格数据,为每一条数据添加一个index属性用来标识每行数据,最后输出结果格式为 sameRowArr = [[0, 1, 2, 3], [4, 5, 6], [7, 8, 9],......] |
添加类名
鼠标移上及移除即可实现动态添加及移除类名,从而实现合并行高亮效果
大致思路:
- 鼠标移入,在cellMouseEnter中,遍历sameRowArr,使用事先存好的索引,判断鼠标移入行的索引是属于sameRowArr中的哪一子项
- 将sameRowArr的子数组赋值给一个全局数组curRowArr
- 在tableRowClassName方法中,循环curRowArr数组
- 行号与子数组中存的行数相同,为该行添加同个类名
1 | // row_class为定义好的css样式类名 |