vue中table多选/单选行,获取其数据方式

 更新时间:2023年07月25日 10:29:37   作者: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
            })
        },

总结

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

相关文章

  • vue2.0 解决抽取公用js的问题

    vue2.0 解决抽取公用js的问题

    这篇文章主要介绍了vue2.0 解决抽取公用js的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue自定义组件实现v-model双向绑定数据的实例代码

    vue自定义组件实现v-model双向绑定数据的实例代码

    vue中父子组件通信,都是单项的,直接在子组件中修改prop传的值vue也会给出一个警告,接下来就用一个小列子一步一步实现了vue自定义的组件实现v-model双向绑定,需要的朋友可以参考下
    2021-10-10
  • 深入理解Vue Computed计算属性原理

    深入理解Vue Computed计算属性原理

    Computed 计算属性是 Vue 中常用的一个功能,本篇文章主要介绍了Vue Computed 计算属性原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 基于vue.js轮播组件vue-awesome-swiper实现轮播图

    基于vue.js轮播组件vue-awesome-swiper实现轮播图

    一般做移动端轮播图的时候,最常用的就是Swiper插件了,而vue.js也有一个轮播组件vue-awesome-swiper,用法跟swiper相似。接下来通过本文给大家详解讲解vue.js轮播组件vue-awesome-swiper实现轮播图实例代码,需要的朋友参考下
    2017-03-03
  • vue3中传递路径参数的限制

    vue3中传递路径参数的限制

    在 Vue 3 里使用路由跳转到用户页并传递路径参数时,存在一些限制和需要注意的方面,下面给大家分享vue3中传递路径参数有什么限制,感兴趣的朋友一起看看吧
    2025-03-03
  • uniapp和vue如何获取屏幕或盒子内容的宽高

    uniapp和vue如何获取屏幕或盒子内容的宽高

    在实际开发中我们会遇到不确定高度的情况,下面这篇文章主要给大家介绍了关于uniapp和vue如何获取屏幕或盒子内容的宽高,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • vue-cli 介绍与安装

    vue-cli 介绍与安装

    这篇文章主要给大家介绍的是vue-cli 介绍与安装,vue-cli是和vue进行深度组合的工具,可以快速帮我们创建vue项目,并且把一些脚手架相关的代码给我们创建好。真正使用vue开发项目,都是用vue-cli来创建项目的,下面文章详细内容,需要的朋友可以参考一下
    2021-10-10
  • Vue项目打包问题详解(生产环境样式失效)

    Vue项目打包问题详解(生产环境样式失效)

    在Vue开发过程中,项目的打包是一个非常重要的步骤,下面这篇文章主要给大家介绍了关于Vue项目打包问题(生产环境样式失效)的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • vue3  mixin 混入使用方法

    vue3  mixin 混入使用方法

    这篇文章主要介绍了 vue3  mixin 混入使用方法,mixin 混入,提供了一种非常灵活的方式,来分发 vue 组件中的可复用功能,一个mixin 对象可以包含任意组件选项,当组件使用 mixin 对象时,所有的 mixin 对象的选项将被混入组件本身的选项。,需要的朋友可以参考一下
    2021-11-11
  • Vue实现大屏获取当前所处城市及当地天气的具体方案

    Vue实现大屏获取当前所处城市及当地天气的具体方案

    文章介绍了如何在大屏项目中展示城市名称和实时天气信息,通过浏览器的GeolocationAPI获取经纬度,然后使用逆地理编码服务获取城市名称,文章还提到了使用Open-Meteo获取天气信息,该服务免费且支持全球经纬度的实时天气和未来7天预报,需要的朋友可以参考下
    2026-02-02

最新评论