开发避坑指南(42):Vue3 element ui el-table单选实现方案

Vue3实现el-table单选功能指南

需求

Vue3+element ui el-table如何实现表格行单选功能?

原代码

<el-table ref="mutiTable" v-loading="loading" :data="orderList" >
  <el-table-column type="selection" width="55" align="center" />
  <el-table-column label="序号" align="center" width="80">
    <template #default="scope">
      {{ scope.$index + 1 + (queryParams.pageNum - 1) * queryParams.pageSize }}
    </template>
  </el-table-column>    
</el-table>  

官方提供了单选的功能,但是没有单选框或者只能单选的复选框,单选不够明显。

解决方法

(1)el-table 增加highlight-current-row 属性,绑定@row-dblclick 事件,绑定@current-change事件

(2)删除type="selection"的el-table-column,增加el-radio的el-table-column

(3)定义currentRow变量、handleMutiTableRowClick()函数、handleCurrentChange()函数

页面代码如下:

<el-table ref="mutiTable" v-loading="loading" :data="orderList" 
  highlight-current-row 
  @row-dblclick="handleMutiTableRowClick"
  @current-change="handleCurrentChange">
  <el-table-column width="35">
    <template v-slot="scope">
      <el-radio
          class="radio"
          :label="scope.row"
          v-model="currentRow"             
        >{{""}}</el-radio>
    </template>
  </el-table-column>
  <el-table-column label="序号" align="center" width="80">
    <template #default="scope">
      {{ scope.$index + 1 + (queryParams.pageNum - 1) * queryParams.pageSize }}
    </template>
  </el-table-column>    
</el-table>   

变量定义:

const currentRow = ref();

函数:

function handleCurrentChange(row) {
    currentRow.value = row;
    //可添加其他行事件,如禁用启用操作按钮
}
function handleMutiTableRowClick(row, column, event) {        
  if (currentRow && row.value.orderNo == currentRow.value.orderNo) { 
    setCurrent();
    currentRow.value= null;       
  } else {
    currentRow.value = row;
  }
}
function setCurrent(row) {
  proxy.$refs["mutiTable"].setCurrentRow(row);
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帧栈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值