vue 表格跨页多选

element官方文档中有两个属性row-key和reserve-selection配合使用就可以跨页多选,首先多选肯定是要设置type="selection",其次再el-table设置row-key和@selection-change="handleChange",然后在js中定义handleChange(selection) {console.log(selection)},这里的selection就是分页选中的所有项数据。


<template>
  <div class="demo-container">
    <el-table
      ref="tableRef"
      :data="tableData"
      tooltip-effect="dark"
      row-key="id"
      @selection-change="handleChange"
    >
      <el-table-column type="selection" width="55" reserve-selection />
      <el-table-column label="日期" prop="date" />
      <el-table-column prop="name" label="姓名" />
    </el-table>
  </div>
</template>

<script setup>
import { ref } from 'vue'
let tableData = ref([])
const handleChange = (selection) => {
     console.log(selection)
}
</script>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中实现表格下拉多的方法有许多种,以下是一种可能的实现方式: 1. 首先,在Vue组件中定义一个表格数据源的数组(比如dataList)和一个保存筛条件的数组(比如selectedOptions)。 2. 在模板中,使用`<select>`标签创建一个下拉多框,并通过`v-model`指令将中的项绑定到selectedOptions数组上。 3. 使用`<table>`标签创建一个表格,并通过`v-for`指令遍历dataList数组,将每一行数据显示在表格中。 4. 在表格的头部或者其他合适的位置,添加一个“筛”按钮,并为其绑定一个点击事件(比如`@click="filterData"`)。 5. 在Vue实例的methods中,定义filterData方法,在该方法内部根据selectedOptions数组中的项对dataList数组进行筛操作,生成一个新的数组(比如filteredData)。 6. 将filteredData数组赋值给表格数据源的数组dataList,即可实现表格的筛效果,页面会根据中的筛条件实时更新。 具体代码示例: ```html <template> <div> <select multiple v-model="selectedOptions"> <option v-for="option in options" :value="option">{{ option }}</option> </select> <button @click="filterData">筛</button> <table> <thead> <tr> <th>Name</th> <th>Age</th> <th>Email</th> </tr> </thead> <tbody> <tr v-for="item in dataList" :key="item.id"> <td>{{ item.name }}</td> <td>{{ item.age }}</td> <td>{{ item.email }}</td> </tr> </tbody> </table> </div> </template> <script> export default { data() { return { options: ['Option 1', 'Option 2', 'Option 3'], // 下拉多框的项 selectedOptions: [], // 中的项 dataList: [ // 表格数据源 { id: 1, name: 'John', age: 30, email: 'john@example.com' }, { id: 2, name: 'Alice', age: 25, email: 'alice@example.com' }, { id: 3, name: 'Bob', age: 35, email: 'bob@example.com' } ] }; }, methods: { filterData() { // 根据中的项对数据源进行筛 this.dataList = this.dataList.filter(item => this.selectedOptions.includes(item.name)); } } }; </script> ``` 以上是一种简单的实现方式,可以根据实际需求进行修改和扩展。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值