vue中table多选/单选行,获取其数据方式
作者:Slay__
这篇文章主要介绍了vue中table多选/单选行,获取其数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
vue table多选/单选行,获取其数据
多选
使用官方文档提供的方式:手动添加一个el-table-column,设type属性为selection即可。
<template> <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> </template>
<script> export default { data() { return { tableData: [{ date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }], multipleSelection: [] } }, methods: { toggleSelection(rows) { if (rows) { rows.forEach(row => { this.$refs.multipleTable.toggleRowSelection(row); }); } else { this.$refs.multipleTable.clearSelection(); } }, handleSelectionChange(val) { this.multipleSelection = val; } } } </script>
单选
在多选的基础上修改,样式不变,将handleSelectionChange方法修改为:
handleSelectionChange(val) { this.multipleSelection = val if (val.length > 1) { this.$refs.multipleTableFrag.clearSelection() this.$refs.multipleTableFrag.toggleRowSelection(val.pop()) } console.log(val[0]['name']) },
用数组存储所选行,每次数组长度大于1时,会pop之前的行,保证数组中最多存在一个行的数据。获取该行某个属性的数据,用val[0]['属性名']。
注意:
this.$refs.multipleTableFrag.clearSelection()为通过table的属性ref值,找到相应的table,执行后面的clearSelection()方法。
若多个表,记得ref要写的不一样。
el-table 多选 单选功能
常见的el-table多选删除功能
<el-table :data="tableData" @selection-change="handleSelectionChange">
js: 将选择的id保存在一个数组里面,可以使用forEach或者map(map可以直接返回一个数组,较为方便)
// 表格复选框 数据 handleSelectionChange(val) { this.changArr = [] val.forEach((item) => { this.changArr.push(item.idBq) }) },
然后就是删除操作:
// 批量删除 deleteDatafile() { if (this.changArr.length > 0) { this.$confirm('此操作将永久批量删除该文件, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }) .then(() => { removeTag({ idbqs: this.changArr, }).then((res) => { if (res && res.data.data) { this.$message.success('删除成功') this.queryData() } }) }) .catch(() => { this.$message({ type: 'info', message: '已取消删除', }) }) } },
单选删除
直接使用 @select="select",在这个方法里面将数据前面的复选框回显上
<el-table :data="tableData" @select="select">
js部分:
// 单选 select(selection, row) { if (selection.length > 1) { let del_row = selection.shift() this.$refs.table.toggleRowSelection(del_row, false) } this.xmdmArr = [] this.chooseList = [] this.xmdmArr.push(row.xmdm) this.chooseList = row.bqszdx.map((item) => { return item.idBq }) },
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。