vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue table多选/单选行,获取其数据

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
            })
        },

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文