vue element-ui el-table组件自定义合计(summary-method)的坑

作者:wo_dxj 时间:2024-05-05 09:24:19 

element-ui el-table组件自定义合计(summary-method)坑

项目需要用到表格,带有合计功能的,照搬的element-ui的table组件,但是合计就是不出来

vue element-ui el-table组件自定义合计(summary-method)的坑

因为表格是客操作的,所以都是用的自定义内容

vue element-ui el-table组件自定义合计(summary-method)的坑

自定义的方法也是官方的

vue element-ui el-table组件自定义合计(summary-method)的坑

后面找问题发现,红框圈住的地方一直是undefined,才发应过来,在表格上应该需要写 prop的,完了写了

vue element-ui el-table组件自定义合计(summary-method)的坑

改成这样,每一列需要计算的都加了,就ok了

vue element-ui el-table组件自定义合计(summary-method)的坑

希望对遇到问题的童鞋一个帮助!

element-ui中的el-table组件时,自定义合并表头和合并行

在使用element-ui中的el-table组件时,怎么自定义合并表头和合并行

1、合并相同数据的行

效果图如下,合并相同名称的行

vue element-ui el-table组件自定义合计(summary-method)的坑

代码如下:

data(){
return{
tableData1:[{a:6},{a:12},{a:7},{b:6},{b:7},{c:44}]
}
}

在el-table头中加入:span-method=“arraySpanMethod”,span-method:合并行或列的计算方法

// 合并列筛选
   flitterData (arr) {
     let spanOneArr = []
     let concatOne = 0
     arr.forEach((item, index) => {
       if (index === 0) {
         spanOneArr.push(1);
       } else {
         if (item && arr[index - 1] && item.a === arr[index - 1].a) { // 第一列需合并相同内容的判断条件
           spanOneArr[concatOne] += 1;
           spanOneArr.push(0);
         } else {
           spanOneArr.push(1);
           concatOne = index;
         }
       }
     });
     return {
       one: spanOneArr
     }
   },
   // 合并相同列
   arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
     if (columnIndex === 0) {
       let data = [];
       data = this.tableData1;
       const _row = (this.flitterData(data).one)[rowIndex];
       const _col = _row > 0 ? 1 : 0;
       return {
         rowspan: _row,
         colspan: _col
       };
     }
   },

2、自定义合并表头

table自带合并属性:rowSpan和colSpan,所以合并表头的思路是:获取所有的表头单元格,针对性的对需要合并的单元格进行操作。

类似下面这种表头的合并

vue element-ui el-table组件自定义合计(summary-method)的坑

比如我们想要合并的是第n列和第n+1列,那么我们先获取到所有的表头,然后将第n列表头的colSpsn设为2,将第n+1列表头的display设为none。

备注:

  • el-table__header:是你table的class名,自定义,也可以使用vue中的ref去定义,然后使用this.$refs.xxx去拿到

  • .rows[0]是拿到table的第一行(rows行)

  • cells:中文的意思是:单元格。就是我们获取一行(rows)后,这一行中有多少单元格,一行中所有的单元格集合,可以理解cells为这个行的第几列

  • colSpan:跨多少列(单元格自带的属性)

  • display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

methods: {
    setColSpan:function() {
      //this.$refs.el-table__header
      // console.log(document.getElementsByClassName("el-table__header"))
      // 获取表头的所有单元格
      let n = document.getElementsByClassName("el-table__header")[0].rows[0].cells
      // 将第二列表头单元格的colSpan设为2
      n[1].colSpan = 2
      // 将第三列表头单元格的display设为none
      n[2].style.display = 'none'
    },
},

mounted() {
    // 注意一定要保证DOM渲染完成后在进行合并操作,否则会找不到元素
    this.$nextTick(function(){
      this.setColSpan();
    })
}

来源:https://%bcnet%/wo_dxj/article/details/86605650

标签:vue,element-ui,el-table,summary-method
0
投稿

猜你喜欢

  • SQL 将一列拆分成多列的三种方法

    2024-01-23 15:30:18
  • Python操作Excel把数据分给sheet

    2023-08-07 17:03:53
  • 在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

    2021-09-04 07:31:23
  • pydantic进阶用法示例详解

    2022-01-31 07:00:03
  • 如何安装控制器JavaScript生成插件详解

    2024-04-10 10:51:51
  • GoLang之go build命令的具体使用

    2024-04-27 15:24:56
  • 实例演练ASP+XML编程

    2007-10-11 13:53:00
  • Filestream使用简单步骤总结

    2024-01-24 08:08:26
  • Python 从subprocess运行的子进程中实时获取输出的例子

    2023-12-24 18:31:10
  • python游戏实战项目之童年经典超级玛丽

    2022-10-01 08:16:34
  • Python通过TensorFLow进行线性模型训练原理与实现方法详解

    2022-11-10 16:17:27
  • CGArt®2008 贺岁刊电子杂志玉鼠闹春

    2008-02-15 08:59:00
  • 浅析php中array_map和array_walk的使用对比

    2023-09-10 22:22:28
  • Python中常见的加密解密算法总结

    2021-10-18 12:13:17
  • MySql在Mac上的安装与配置详解

    2024-01-27 03:09:52
  • 浏览器右下角弹出提示窗口

    2008-10-30 12:37:00
  • Golang语言实现gRPC的具体使用

    2024-05-05 09:26:19
  • 详解用Python实现自动化监控远程服务器

    2021-02-14 15:50:57
  • xhtml有哪些块级元素

    2009-12-06 11:58:00
  • python 实现全球IP归属地查询工具

    2023-10-05 16:31:33
  • asp之家 网络编程 m.aspxhome.com