el-table使用row-class-name属性点击某行显示白色高亮

前言 :

       该方式只能通过获取该行索引并且对比实现,估计element-plus内部逻辑写的是循环,我也懒得去github上面看了,如果你企图传递该行的“序号”属性,那够你折腾排查原因的,我都快排查疯了才发现必须传递该行索引。

正确方式:

  <el-table
    :data="tableData"
    class="dark-table"
    :row-class-name="setRowClassName"
    @row-click="handleRowClick"
  >
// 定义一个响应式变量,用于存储当前选中行的索引,初始化为 null
const selectedRowIndex = ref<number | null>(null);

// 处理行点击事件的函数
const handleRowClick = (row: any) => {
  // 获取点击行在 tableData 中的索引
  const rowIndex = tableData.value.indexOf(row);
  // 如果当前选中行的索引与点击行的索引相同,则取消选中
  if (selectedRowIndex.value === rowIndex) {
    selectedRowIndex.value = null; // 取消高亮
  } else {
    // 否则,设置选中行为当前点击的行
    selectedRowIndex.value = rowIndex; // 设置高亮
  }
};

// 动态设置行样式的函数
const setRowClassName = ({ rowIndex }: { rowIndex: number }) => {
  // 如果当前行的索引与选中行的索引相同,则返回 'highlight-row' 类名,用于高亮显示
  if (rowIndex === selectedRowIndex.value) {
    return 'highlight-row';
  }
  // 否则返回空字符串,表示不应用任何特殊样式
  return '';
};

这样可以实现点击显示高亮:

错误方式:

// 动态设置行样式的函数
const setRowClassName = ({row}:{ row: any}) => {
  console.log('当前样式序号:' + row);
  // 如果当前行的索引与选中行的索引相同,则返回 'highlight-row' 类名,用于高亮显示
  if (row.序号 === selectedRowIndex.value) {
    return 'highlight-row';
  }
  // 否则返回空字符串,表示不应用任何特殊样式
  return '';
};

点击:

显示,不显示高亮:

更正错误:

就在我刚刚写这篇博客的时候,突然又找到了正确打开方式,row是一个含有序号,报警位置信息等多种属性的对象,要row.序号才行:

// 动态设置行样式的函数
const setRowClassName = ({row}:{ row: any}) => {
  console.log('当前样式序号:' + row.序号);
  // 如果当前行的索引与选中行的索引相同,则返回 'highlight-row' 类名,用于高亮显示
  if (row.序号 === selectedRowIndex.value) {
    return 'highlight-row';
  }
  // 否则返回空字符串,表示不应用任何特殊样式
  return '';
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值