• e-table,表格单元格合并


    表格合并,根据表格第一列***名称相同,则进行单元格的合并。变化情况分析(前/后)单元格也同样要合并,其合并依据的是表格第一列***名称相同。

    查找官网,表格合并方法:

    https://element.eleme.io/#/zh-CN/component/table

    span-method合并行或列的计算方法Function({ row, column, rowIndex, columnIndex })

    首先第一步:给我们的表格添加一个方法

     :span-method="spanMethod"

    1. "tableData" ref="tableDataAgain" class="my-new-table" border height="390"
    2. :span-method="spanMethod">

    spanMethod函数接收4个参数,分别是row, column, rowIndex, columnIndex,感兴趣的小伙伴可自行打印来看看是什么样子的。

    1. spanMethod({ row, column, rowIndex, columnIndex }) {
    2. if (columnIndex === 0 || columnIndex === 4 || columnIndex === 5 ||columnIndex === 6 || columnIndex === 7) {
    3. return this.mergeCol("depId", rowIndex);
    4. }
    5. },

    这里面我们对表格columnIndex进行一个判断,第一列的第一个表格则是columnIndex为0,以此类推,所以变化情况分析(前/后)单元格数格子过来,他们则是4,5,6,7.

    当单元数为这些格子的时候,我们进行一个return 返回,调用函数mergeCol,并传两个参数进行,这里的depId是业务需要,传递一个id 和索引行进去。

    mergeCol方法里面,对行号进行一个判断,有写注释,供大家学习参考。

    1. mergeCol(id, rowIndex) {
    2. // 合并单元格
    3. // id:属性名
    4. // rowIndex:行索引值
    5. var idName = this.tableData[rowIndex][id]; // 获取当前单元格的值
    6. if (rowIndex > 0) {
    7. // 判断是不是第一行
    8. if (this.tableData[rowIndex][id] != this.tableData[rowIndex - 1][id]) {
    9. // 先判断当前单元格的值是不是和上一行的值相等
    10. var i = rowIndex;
    11. var num = 0; // 定义一个变量i,用于记录行索引值并进行循环,num用于计数
    12. while (i < this.tableData.length) {
    13. // 当索引值小于table的数组长度时,循环执行
    14. if (this.tableData[i][id] === idName) {
    15. // 判断循环的单元格的值是不是和当前行的值相等
    16. i++; // 如果相等,则索引值加1
    17. num++; // 合并的num计数加1
    18. } else {
    19. i = this.tableData.length; // 如果不相等,将索引值设置为table的数组长度,跳出循环
    20. }
    21. }
    22. return {
    23. rowspan: num, // 最终将合并的行数返回
    24. colspan: 1,
    25. };
    26. } else {
    27. return {
    28. rowspan: 0, // 如果相等,则将rowspan设置为0
    29. colspan: 1,
    30. };
    31. }
    32. } else {
    33. // 如果是第一行,则直接返回
    34. let i = rowIndex;
    35. let num = 0;
    36. while (i < this.tableData.length) {
    37. // 当索引值小于table的数组长度时,循环执行
    38. if (this.tableData[i][id] === idName) {
    39. i++;
    40. num++;
    41. } else {
    42. i = this.tableData.length;
    43. }
    44. }
    45. return {
    46. rowspan: num,
    47. colspan: 1,
    48. };
    49. }
    50. },

  • 相关阅读:
    4.cmake-更好的hello-world
    SpringBoot整合Swagger详解
    力扣SQL50 每台机器的进程平均运行时间 SUM AVG DISTINCT
    Anaconda3安装与配置教程(2022.11)
    python爬取网站的一些技巧总结
    nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头
    gitpod.io,云端开发调试工具。
    Redis如何实现多可用区?
    Java集合框架(二)List
    Android:使用Jetpack Compose画渐变背景
  • 原文地址:https://blog.csdn.net/qq_63322025/article/details/133922615