el-table找出当前单元格与对应的上下列的值

当表格中当前单元格的name字段与相邻单元格的name字段不同时,使用Vue.js设置红色边框。示例代码展示了如何检查并修改表格数据,特别是在name字段变化时应用特定的样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前单元格与对应的上下列的值如果不相同就设置个红色边框

当前单元格与对应的上下列的值如果不相同就设置个红色边框

以下是示例代码,对tableData数据的name字段进行处理
如果当前name值与上一条数据的name值 或者 下一条数据的name值 不相等,就设置红色边框。

<template>
  <el-table :data="tableData" style="width: 100%" :header-cell-style="{'text-align': 'center'}" :cell-style="cellStyle">
    <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>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          date: '2016-05-02',
          name: '王小虎1',
          address: '上海市普陀区金沙江路 1518 弄'
        },
        {
          date: '2016-05-02',
          name: '王小虎2',
          address: '上海市普陀区金沙江路 1517 弄'
        },
        {
          date: '2016-05-02',
          name: '王小虎3',
          address: '上海市普陀区金沙江路 1519 弄'
        },
        {
          date: '2016-05-02',
          name: '王小虎3',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          date: '2016-05-02',
          name: '王小虎3',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          date: '2016-05-02',
          name: '王小虎4',
          address: '上海市普陀区金沙江路 1516 弄'
        }
      ]
    }
  },
  methods: {
    cellStyle({ row, column, rowIndex, columnIndex }) {
      // 设置默认居中显示
      let cellStyleStr = 'text-align: center;';
      // 如果只有1条数据直接返回
      if (this.tableData && this.tableData.length === 1) return cellStyleStr;
      if (column.label === '姓名') {
        // 如果是第1行数据(这里rowIndex === 0是第1行数据),并且 当前行的name(row.name是当前行的数据) 不等于 下一行的name(这里用tableData[rowIndex + 1]表示下一行的数据, 用tableData[rowIndex - 1]表示上一行的数据)
        if (rowIndex === 0 && row.name !== this.tableData[rowIndex + 1].name) {
          cellStyleStr += 'border: 1px solid red'
          // rowIndex > 0是第二行到倒数第二行的数据
        }else if (rowIndex > 0 && rowIndex < this.tableData.length - 1 && (row.name !== this.tableData[rowIndex + 1].name || row.name !== this.tableData[rowIndex - 1].name)) {
          cellStyleStr += 'border: 1px solid red';
          // rowIndex === this.tableData.length - 1是最后一行的数据
        }else if (rowIndex === this.tableData.length - 1 && row.name !== this.tableData[rowIndex - 1].name) {
          cellStyleStr += 'border: 1px solid red';
        }
      }
      return cellStyleStr;
    }
  }
}
</script>

结果,第4行没有边框是因为它对应的上一个单元格和下一个单元格的值都是一样的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上暴富

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值