el-table实现多选并高亮显示

1、引入table组件,配置相关属性

<el-table
      ref="multipleTable"
      :data="tableData3"
      tooltip-effect="dark"
      style="width: 100%"
      @selection-change="handleSelectionChange"
      @row-click="handleclick"
      :row-style="rowClass"  //核心项
      row-key="id"
    >
</el-table>

2、定义全局数据

data(){
  return {
 selectRow: [],
multipleSelection:[]
}
}

3、如果选中的行发生变化时,存储当前所选的所有行

watch: {
    multipleSelection(data) {  //存储选中的row
      this.selectRow = [];
      if (data.length > 0) {
        data.forEach((item, index) => {
          this.selectRow.push(item.id);
        });
      }
    }
  },

4、定义多选和选中行的样式

methods: {
    rowClass({ row, rowIndex }) {              //对所选行进行样式设置,最终效果就看这里了
      if (this.selectRow.includes(row.id)) {
        return { "background-color": "rgba(185, 221, 249, 0.75)" };
      }
    },
    rowclick(row) {                           //实现点击多选
      this.$refs.equtable.toggleRowSelection(row);
      },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
}

5、悬浮和选中效果

/deep/ .el-table--enable-row-hover .el-table__body tr:hover > td {
   background: #00bbee;
   color: #ffffff;
 }
 /deep/ .el-table__body tr.current-row > td {
   background-color: #00bbee !important;
 }

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了实现多选功能,我们需要在数据源中添加一个属性来记录选中状态,然后在表格中添加一个复选框列,以及一个全选复选框。当用户点击复选框时,我们需要更新数据源中对应的选中状态。 下面是一个简单的示例代码: ```html <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, address: '北京', selected: false }, { name: '李四', age: 20, address: '上海', selected: false }, { name: '王五', age: 22, address: '广州', selected: false }, { name: '赵六', age: 24, address: '深圳', selected: false } ] } }, computed: { // 计算选中的行数 selectedCount() { return this.tableData.filter(row => row.selected).length }, // 是否全选 isAllSelected() { return this.selectedCount === this.tableData.length } }, methods: { // 全选/取消全选 toggleSelectAll(checked) { this.tableData.forEach(row => { row.selected = checked }) }, // 切换选中状态 toggleSelect(row) { row.selected = !row.selected } } } </script> ``` 在这个示例中,我们添加了一个`selected`属性来记录每一行的选中状态。`computed`中的`selectedCount`计算选中的行数,`isAllSelected`判断是否全选。 在模板中,我们在表格中添加了一个类型为`selection`的列,用来显示复选框。同时,我们添加了一个全选复选框,绑定`toggleSelectAll`方法。当用户点击复选框时,我们调用`toggleSelect`方法来更新数据源中对应的选中状态。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值