elementUI table 获取已勾选的行的数据

9 篇文章 0 订阅
6 篇文章 0 订阅


前言:对列表项进行批量操作时,实现类似下图的效果,有两种方法
在这里插入图片描述

方法一:主要用到el-table的selection-change事件函数

优点:简单
缺点:如果存在分页,进入别的分页,selection清空在这里插入图片描述
html

<el-table  size="mini" :v-loading="loading.table" :data="listResult" :row-key="getRowkey"  @selection-change="selectL" ref="multipleTable"  align="center" max-height="200" >

js

// 选中添加/不选中删除
selectL (selection, row) {
  this.listSelect = selection;
  this.listSelectId = selection.map(item => item.id)
},

方法二:主要用到el-table的select和select-all事件函数

  • 优点:切页后,被选项依然存在,即支持切页保留被选项,被选项回显
    支持切页搜索
  • 知识点:
  1. 定义selectAllCheck:0,//奇选偶非选判定当前列表数据项是否为全选状态
  2. toggleRowSelection():设置待选列表的数据项的默认选中,需要页面渲染完毕之后才有效,因此需要放在this.$nextTick
  3. 判断selection/this.listResult中的数据项是否在已选列表listSelect中时,直接用数据项itemif(this.listSelect.indexOf(item) === -1)无效,通过idif(this.listSelectId.indexOf(item.id) === -1)判断有效(不知道为什么)
  • 代码
<el-table  size="mini" :v-loading="loading.table" :data="listResult" @select="selectL" @select-all="selectAll" ref="multipleTable"  align="center" max-height="200" >
data(){
  return{
      listResult: [],
      listSelect: [],
      listSelectId: [],
      loading1: {
        table: true
      },
      pageInfoResult: {
        pageNum: 1,
        pageSize: 10,
        total: 10
      },
      selectAllCheck:1,//奇非全偶已全
    }
}
// 查询选择列表
fetchSelectAssets() {
  this.loading1.table = true
  this.search = Object.assign({}, this.pageInfoResult)
  listAssetinfo(this.search).then(res => {
      this.listResult = res.rows
      // 设置listSelect中存在的数据项默认选中
      this.$nextTick( ()=> {
        this.listResult.forEach(item => {
          if(this.listSelectId.indexOf(item.id)!=-1){
            this.selectAllCheck = 2
            this.$refs.multipleTable.toggleRowSelection(item);
          }
          else{
            this.selectAllCheck = 1
          }
        })
      })
      this.pageInfoResult.total = res.total
      this.loading1.table = false
  })
},
// 选中添加/不选中删除---点击全选
// 选中添加/不选中删除---点击全选
selectAll (selection) {
  if(this.selectAllCheck%2){
    console.log(this.selectAllCheck, this.selectAllCheck%2,'未全选')
    selection.forEach((item, index) => {
      if(this.listSelectId.indexOf(item.id) === -1){
        this.listSelect.push(item)
        this.listSelectId.push(item.id)
      }
    })
  }else {
    console.log(this.selectAllCheck, this.selectAllCheck%2,'已全选')
    this.listResult.forEach((item, index) => {
      const i = this.listSelectId.indexOf(item.id)
      if(i !== -1){
        this.listSelect.splice(i, 1)
        this.listSelectId.splice(i,1)
      }
    })
  }
  this.selectAllCheck++
},
// 选中添加/不选中删除---点击行
selectL (selection, row) {
  if (event.target.checked) {
    this.listSelect.push(row)
    this.listSelectId.push(row.id)
    if(selection.length == this.listResult.length){  //判断是否当前页面的数据项是否已全部被选中
      this.selectAllCheck = 2
    }
  } else {
    this.selectAllCheck = 1//当前页面的数据项已经不是全部被选中
    for (let i in this.listSelectId) {
      if (row.id === this.listSelectId[i]) {
        this.listSelect.splice(i, 1)
        this.listSelectId.splice(i, 1)
      }
    }
  }
},
  • 效果
  1. 点击添加和全选添加在这里插入图片描述
  2. 切页保存已选项和切页回显
    在这里插入图片描述
  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在 Element UI 的 table 组件中,可以使用 v-model 绑定一个变量来获取选中。例如: ``` <el-table v-model="selectedRows" @selection-change="handleSelectionChange"> ``` 其中 `selectedRows` 是用来存储选中的变量,`handleSelectionChange` 是在选中改变时触发的事件。 在 `handleSelectionChange` 方法中,可以访问到当前选中,例如: ``` handleSelectionChange(val) { console.log(val) } ``` 上面代码中的 val 就是当前选中,可以对其进处理。 还可以使用ref获取到表格组件,然后使用$refs.tableRef.store.states.selection 来获取选中 ``` <el-table ref="tableRef" @selection-change="handleSelectionChange"> ``` 在handleSelectionChange中 ``` handleSelectionChange(val) { console.log(this.$refs.tableRef.store.states.selection) } ``` 上面代码中 this.$refs.tableRef.store.states.selection 就是当前选中 ### 回答2: ElementUI是一款基于Vue.js的组件库,其中包括了Table表格组件。在项目中经常需要获取表格中选中,本篇就要介绍如何使用ElementUI Table组件获取选中。 首先需要在Table组件中设置一个属性:`@selection-change`。该属性会在选中项发生改变时触发一个事件,我们可以在事件中获取选中数据。 示例代码如下: ```html <el-table @selection-change="handleSelectionChange" :data="tableData" v-loading="tableLoading" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> ``` 在该示例代码中,我们还使用了`:data`属性和`v-loading`指令来设置表格的数据和表格加载状态。 接下来要实现`handleSelectionChange`方法来获取选中数据。该方法接收一个参数`selectedRows`,它是一个数组,包含了当前选中的所有数据对象。我们可以用这个数组来获取选中数据。 ```javascript methods: { handleSelectionChange(selectedRows) { console.log(selectedRows); // 打印选中数据 } } ``` 至此,我们已经实现了ElementUI Table获取选中的功能。 如果我们还想让选择框的勾选状态和某些操作按钮的禁用状态与选中数据绑定,我们可以通过`:row-key`和`:row-selection`属性实现选中的状态绑定。具体可以参考ElementUI官网提供的Table组件文档:https://element.eleme.cn/#/zh-CN/component/table#hang-shu-ju-kong-zhi。 总之,配合`@selection-change`事件和`handleSelectionChange`方法,我们可以在ElementUI Table组件中非常方便地获取选中数据。 ### 回答3: ElementUI是一套基于Vue.js框架的组件库,为我们提供了一些非常便捷的组件和方法,其中表格(Table)是非常常用的组件之一,而获取表格中选中也是我们在实际开发中经常需要的功能。下面是一种简单的方法来实现ElementUI表格中获取选中的功能: 1. 首先,在HTML模板中定义表格及相关的变量,代码如下: <template> <div> <el-table ref="table" :data="tableData" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"> </el-table-column> <el-table-column prop="name" label="Name" width="180"> </el-table-column> <el-table-column prop="age" label="Age" width="100"> </el-table-column> <el-table-column prop="address" label="Address"> </el-table-column> </el-table> <div v-show="selectionList.length"> <p>Selected: {{ selectionList }}</p> </div> </div> </template> <script> export default { data() { return { tableData: [ { name: 'John', age: 26, address: 'New York' }, { name: 'Jane', age: 24, address: 'Paris' }, { name: 'Tom', age: 32, address: 'London' }, { name: 'Mike', age: 29, address: 'Sydney' }, ], selectionList: [] }; }, methods: { handleSelectionChange(val) { this.selectionList = val.map(item => item.name); } } }; </script> 2. 在data中定义一个空数组selectionList,用于存放选中。 3. 在el-table中设置@selection-change事件,当用户在表格中选中或取消选中时触发。在事件处理函数handleSelectionChange中,我们可以通过参数val获取当前选中的信息(数组形式),然后将选中的名称存入selectionList数组中。 4. 在模板中展示选中信息。 实现以上代码后,我们在表格中选择,就可以实现获取选中信息的功能。这种方法适用于需要获取单选或多选表格的选中信息。可以根据实际需要对代码进修改,例如通过表格数据的id等唯一标识进操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值