【vue】ElementUI el-table获取单元格的值&间隔行显示颜色&多级表头&合并行&表头固定

ElementUI笔记

2022/4/26 周二

前端新手入门,如有错误,欢迎在评论区指出,非常感谢!


1. 获取单元格的值

比如说我要先获取单元格内的值,如果是“合计”行的话就设置不同的样式,可以给el-table元素添加一个 :cell-style=“cellStyle” 的方法,该方法可以带4个参数row, column, rowIndex, columnIndex,用 row[column.property] 就能获取当前单元格的值:

cellStyle({
   row, column, rowIndex, columnIndex,
}) {
    // 获取最后一行合计行的行号,赋值给全局变量sumRowIndex,这样遍历到这一行后面的单元格也都能拿到这个行号
    if (row[column.property] == "合计") {
   	    sumRowIndex = rowIndex
    };
	// 合计行显示颜色
	if(rowIndex == sumRowIndex) {
        return { backgroundColor: '#c1deb7'}; 
	};
  },

效果:
获取单元格的值

2. 表格间隔行显示颜色

在cellStyle方法里给行号为偶数的单元格设置背景颜色就行了

if (rowIndex % 2 !== 0) {
	def = {backgroundColor: '#e4e7ed'}; 
};

这个间隔行的深色和之前合计行的颜色要显示哪个,取决于哪个代码后运行(样式覆盖)。

3. 多级表头表头合并行合并列

通过el-table-column标签的 嵌套 实现:

<el-table :row-key="bandRowKeys" :data="tableData" class="table" :fit="false" border :header-row-style="headerRowStyle" :header-cell-style="tableHeadCellStyle" :cell-style="cellStyle">
  <el-table-column width="64" prop="XCOMDESC" label="合并行">
  </el-table-column>
  <el-table-column label="合并列">
    <el-table-column width="66" prop="TOTAL_POLICY_QTY" label="列1">
    </el-table-column>
    <el-table-column width="66" prop="DONE_POLICY_QTY" label="列2">
    </el-table-column>
    <el-table-column width="64" prop="POLICY_QTY_RATE" label="列3">
    </el-table-column>
    <el-table-column width="68" prop="POLICY_QTY_INC" label="列4">
    </el-table-column>
  </el-table-column>
</el-table>

效果:
多级表头

4. 表格合并行

我需要表格首列值相同的单元格合并,可以给el-table标签定义一个 :span-method=“arraySpanMethod” 方法,其中COLUMNNAME是这一列的列名(对应prop=“COLUMNNAME”),按需要修改:

arraySpanMethod({ row, column, rowIndex, columnIndex }) {
    if (columnIndex === 0) {
        if(rowIndex ===0 || row.COLUMNNAME != this.tableData[rowIndex-1].COLUMNNAME){
            let rowspan = 0;
            this.tableData.forEach(element => {
                if(element.COLUMNNAME === row.COLUMNNAME){
                    rowspan ++;
                }
            });
            return [rowspan, 1];
        }else {
            return [0, 0];
        }
    }
}

效果:
在这里插入图片描述

5. 表头固定显示,不随滚动条而被滑上去

只要在el-table元素中定义 height 属性,就可固定表头

<el-table :data="tableData" height="480">
</el-table>
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Vue3 Element-Plus的el-table汇总单元格合并,你可以使用`span-method`属性来定义一个函数,该函数可以返回每个单元格需要合并数和列数。下面是一个示例代码: ```html <el-table :data="tableData" border style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> <el-table-column label="合计" :span-method="objectSpanMethod"> <template #default="{ rows, row, column, $index }"> <span v-if="$index === 0">{{ row.total }}</span> </template> </el-table-column> </el-table> ``` 在上面的代码中,我们定义了一个`objectSpanMethod`方法,并将其赋给`span-method`属性。这个方法接收四个参数:`{ rows, row, column, $index }`。其中`rows`是当前列的所有数据,`row`是当前数据,`column`是当前列数据,`$index`是当前的索引。 下面是`objectSpanMethod`方法的实现: ```js methods: { objectSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 3) { if (rowIndex === 0) { return { rowspan: this.tableData.length, colspan: 1 }; } else { return { rowspan: 0, colspan: 0 }; } } } } ``` 在上面的代码中,我们检查当前列是否为第四列(即“合计”列),如果是,我们检查当前是否为第一。如果是,我们返回一个对象`{ rowspan: this.tableData.length, colspan: 1 }`,其中`rowspan`表示当前单元格需要合并数,`colspan`表示当前单元格需要合并的列数。如果当前不是第一,则返回一个空对象`{ rowspan: 0, colspan: 0 }`,表示当前单元格不需要合并。 这样,我们就可以实现Vue3 Element-Plus的el-table汇总单元格合并了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值