el-table的selection多选表格改为单选

avatar
作者
筋斗云
阅读量:4

需求场景: 选择表格数据时,需要控制单条数据的操作按钮是否禁用。

效果图: 

html代码:

<div>     <el-table       ref="multipleTable"       :data="tableData"       tooltip-effect="dark"       style="width: 100%"       @selection-change="handleSelectionChange"     >       <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>

js代码:

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: [], // 多选存储数据       checkedSelection: {}, // 单选存储数据     };   },   mounted() {     document.onclick = () => {       console.log('单选--checkedSelection', this.checkedSelection);     }   },   methods: {     toggleSelection(rows) {       if (rows) {         rows.forEach((row) => {           this.$refs.multipleTable.toggleRowSelection(row);         });       } else {         this.$refs.multipleTable.clearSelection();       }     },     // 设置单选主要代码     handleSelectionChange(val) {       console.log('val--==', val);       // 默认多选       // this.multipleSelection = val;        // 单选       if(val.length == 1){         let item = val[val.length -1];         this.checkedSelection = JSON.parse(JSON.stringify(item));       }        // 单选选中多条时,需要清空所选数据       if(val.length > 1){         this.$refs.multipleTable.clearSelection(); // 清空选项         this.$refs.multipleTable.toggleRowSelection(val.pop()); // 选中最后点击的数据       }        // 取消选中       if(val.length == 0){         this.checkedSelection = {};       }     },   }, };

css代码: 

<style lang="less" scoped> // 禁用table全选按钮 .table-wrap{   /deep/.el-table__header{     .el-checkbox{       display: none;     }   } } </style>

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!