vue table表格多选 以及 单击某行选中与取消 全选按钮正常显示

单击某行关键事件

row-click   rowclick(){ this.$refs.multipleTable.toggleRowSelection(row);}

若全选按钮不能正常显示 需要另外添加事件

:row-key="getRowKey"

getRowKey(row){

return row.id

}

<template>

  <div>

    <el-table

      ref="multipleTable"

      :data="tableData"

      tooltip-effect="dark"

      style="width: 100%"

      @selection-change="handleSelectionChange"

      @row-click="rowClick"

    >

      <el-table-column type="selection" width="55"> </el-table-column>

      <el-table-column label="日期" width="120">

        <template slot-scope="scope">{{ scope.row.date }}</template>

      </el-table-column>

      <el-table-column prop="name" label="姓名" width="120"> </el-table-column>

      <el-table-column prop="address" label="地址" show-overflow-tooltip>

      </el-table-column>

    </el-table>

    <div style="margin-top: 20px">

      <el-button @click="toggleSelection([tableData[1], tableData[2]])"

        >切换第二、第三行的选中状态</el-button

      >

      <el-button @click="toggleSelection()">取消选择</el-button>

    </div>

  </div>

</template>

<script>

export default {

  data() {

    return {

      tableData: [

        {

          date: "2016-05-03",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

        {

          date: "2016-05-02",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

        {

          date: "2016-05-04",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

        {

          date: "2016-05-01",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

        {

          date: "2016-05-08",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

        {

          date: "2016-05-06",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

        {

          date: "2016-05-07",

          name: "王小虎",

          address: "上海市普陀区金沙江路 1518 弄",

        },

      ],

      multipleSelection: [],

    };

  },

  methods: {

    rowClick(row) {

      this.$refs.multipleTable.toggleRowSelection(row);

    },

    toggleSelection(rows) {

      if (rows) {

        rows.forEach((row) => {

          this.$refs.multipleTable.toggleRowSelection(row);

        });

      } else {

        this.$refs.multipleTable.clearSelection();

      }

    },

    handleSelectionChange(val) {

      this.multipleSelection = val;

      // console.log("多选",this.multipleSelection)

    },

  },

};

</script>

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以通过以下步骤实现vue+iview外部按钮删除Table表格通过复选框选中的某一行数据: 1. 在table组件中添加selection-change事件处理函数,用于监听选中数据的变化。 ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange"> <TableColumn type="selection" :selectable="selectable"></TableColumn> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> </Table> <Button type="primary" @click="handleDelete">删除选中项</Button> </template> ``` 2. 在methods中定义handleSelectionChange方法,用于保存当前选中的数据。 ```javascript methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete() { // 删除选中的数据 this.selectedItems.forEach(item => { const index = this.tableData.indexOf(item); this.tableData.splice(index, 1); }); // 取消选中状态 this.$refs.table.clearSelection(); } } ``` 3. 在handleDelete方法中实现删除选中的数据,并调用$refs.table.clearSelection()方法取消选中状态。 完整代码如下: ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange" ref="table"> <TableColumn type="selection" :selectable="selectable"></TableColumn> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> </Table> <Button type="primary" @click="handleDelete">删除选中项</Button> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ], selectedItems: [] }; }, methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete() { // 删除选中的数据 this.selectedItems.forEach(item => { const index = this.tableData.indexOf(item); this.tableData.splice(index, 1); }); // 取消选中状态 this.$refs.table.clearSelection(); } } }; </script> ``` 其中,需要注意的是在TableColumn中添加了type="selection"属性,用于实现复选框选择功能。同时,还需要定义selectable方法,用于控制某些行是否可选。 ```javascript selectable(row, index) { // 第一行不可选 return index !== 0; } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值