随手记:vue2 使用element UI table表格的单选多选反选思路

这篇具有很好参考价值的文章主要介绍了随手记:vue2 使用element UI table表格的单选多选反选思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

selection-change 参数只有一个selection : 可以获取到当前勾选的row的数据,勾选自动行程数组
@selection-change="handleSelectionChange"

   // 多选框选中数据

    handleSelectionChange(selection) {

        //selection 是勾选中的数组

    },
 select 参数 selection 选中的数组  row 当前选中的单条数据

@select="handleSelectOne"

 // 多选框选中单条数据

    handleSelectOne(selection, row) {

      console.log(selection, row)

    },
 

select-all 参数 selection 全选选中的数组
@select-all="handleSelectAll"
 

   // 多选框全选

    handleSelectAll(selection) {

      console.log( selection)

    },
 

场景1:
实现思路:table勾选后获取勾选数据,可以使用selection-change返回的selection就是勾选中的数据
场景2:
tableA在弹窗中,打开弹窗tableA勾选后获取勾选数据,关闭数据,数据回显另一个tableB再次打开弹窗tableA,要展示刚刚已经选中的数据
实现思路:
黄色的那一步还是selection-change返回的selection就是勾选中的数据给到tableB,
蓝色的那一步需要在打开弹窗获取到接口数据后,把选中的数组数据和tableB的接口数据做匹配,筛选出id相等的数据,使用表格toggleRowSelection回显勾选
(tips:接口中操作是为了可以实现分页翻页勾选不会被重置,$nextTick一定要加上,因为需要作用在弹窗打开之后才能$refs获取到表格)
例如:

    // 假设这是一个获取后台服务器的接口数据
      associatedDrugs(this.queryParams).then(response => {
        //获取到数据之后复制给到弹窗Table
        this.dialogTableList = response.rows;
        //打开弹窗
        this.dialogVisible = true;
        // 切换分页或者tab保持原来选择的已有数据打勾
        this.$nextTick(() => {
          //this.selectionList原来已经选中的数据
          this.selectionList.forEach(item => {
            let checkItem = this.dialogTableList.find(v => v.id == item.id);
            if(checkItem) {
                //this.$refs.dialogTable获取到你自己定义的弹窗表格ref
              this.$refs.dialogTable.toggleRowSelection(checkItem);
            }
          })
        })
      })
   

场景3:
取消勾选的思路,原有选中数据需要再次点击,打勾被去掉应该去掉数据,用 select,两个参数,判断selection中不包含row,就是取消行为,取消时,把选中的数组中的当前row做splice删除
场景4:
全选时使用select-all,全选时,因为只能全选当前页,所以有分页时要考虑到其他页面的原选择数据。所以全选时,先把所有选中的数据都concat进去,再去重数据。反全选也会触发select-all
场景5:
全选后再单独去掉某一个,会先触发select-all,再触发select文章来源地址https://www.toymoban.com/news/detail-858259.html

    // 选择商品药品表格选择单个
    handleSelectOne(list, row) {
      // 去掉勾选
      let rowIndex = list.findIndex(e => e.id == row.id);
      if(rowIndex == -1) { 
        let index = this.selectionList.findIndex(v => v.id == row.id);
        this.selectionList.splice(index, 1);
      }
      // 选中的数据去掉相同的缓存到selectionList
      list.forEach(item => {
        let index = this.selectionList.findIndex(v => v.id == item.id);
        if(index == -1) {
          this.selectionList.push(item);
        }
      })
    },
    // 选择商品药品表格全选
    handleSelectAll(list) {
      if(list.length) {
        // 全选concat新选,去掉重复数据
        let arr = JSON.parse(JSON.stringify(this.selectionList));
        arr = arr.concat(list);
        this.selectionList = this.removeSameData(arr);
      }else {
        // 反选操作,要保留分页的其他原有数据
        let arr = JSON.parse(JSON.stringify(this.selectionList));
        this.dialogTableList.forEach(item => {
          arr = arr.filter(e => e.id != item.id);
        })
        this.selectionList = arr;
      }
      console.log(this.selectionList)
    },

到了这里,关于随手记:vue2 使用element UI table表格的单选多选反选思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui table 表格控件实现单选功能

    今天遇到一个需求,感觉挺简单的,需求如下: 就是一个表格,在表格的前面加上一个选择框,注意: 只能单选 然后我就去element ui上粘代码: 虽然element ui上有对应的单选表格,可是并不符合我的需求 然后我又发现下面有一个多选的表格,样式虽然相似,可是还是不符合我

    2024年02月11日
    浏览(43)
  • element-ui的el-table表格复选框只能单选,不可多选

    element的el-table表格复选框只能选中一条,选择下一条,上一条去掉勾选。使用文档中select方法,el-table绑定一个ref。具体代码实现如下 toggleRowSelection:用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中) 

    2024年02月11日
    浏览(45)
  • vue2/3 - 基于element(ui/plus)实现el-table表格每行可拖动换位置排序,表格列(表头)可拖动交换位置功能效果(table表格可拖曳排序的行和列,用鼠标动态拖拽排序表格行列)

    在vue2、vue3项目开发中,element饿了么组件库实现表格el-table组件支持【行和列可拖曳排序、换位置】功能,每行数据可拖拽进行排序调换位置,每列数据可以自由拖动进行调换位置。 提供详细示例代码,复制源码换个数据就能用了。

    2024年04月13日
    浏览(46)
  • Vue中使用Element UI的Table组件实现嵌套表格(最简单示例)

    以下是一个简单的示例代码,演示如何在Vue中使用Element UI的Table组件实现嵌套表格: 上面的代码通过type=\\\"expand\\\"设置了一个展开按钮,点击该按钮会显示与当前行关联的子表格内容。 在上面的示例中,我们定义了一个包含姓名和年龄的主表格,以及一个展开列用于显示与每行

    2024年02月02日
    浏览(39)
  • vue2 element ui 的表格使用 sortablejs 拖拽列遇到的问题和解决方案

    项目使用 element ui 的表格实现拖动表头可改变列的宽度,又使用sortablejs实现表格的列可拖拽到其他列的位置,导致出现如下的一些问题: 1、某一列宽变大或变小后,只有当前列可拖拽,其他列无法拖拽。 解决方案:在列宽发生改变后,销毁当前拖拽实例,再重新创建拖拽

    2024年02月08日
    浏览(40)
  • 【Vue】Vue 使用 Print.js 打印选中区域的html,用到的是Element ui table表格,解决页面样式不出现或者table表格样式错乱问题!!!

    需求 : 打击打印按钮,文字内容以及表格中的内容 解决方案 加上这句就好了!完美! 一、因为表格数据过多,之前加了表格滚动条,但是打印出来 会把表格上的滚动条也打印出来,所以这里改成了 给弹框加滚动条,去掉表格中的滚动条 2.1 原因: table-layout: fixed导致的,

    2024年02月09日
    浏览(52)
  • Element UI自定义被禁用(disabled)的单选框的样式

    在Element UI中,如果你想自定义被禁用(disabled)的单选框的样式,可以使用以下步骤: 1.使用 ::v-deep 或 /deep/ 选择器:  这样可以更改被禁用单选框的样式。 2.定义样式: 通过定义选择器来修改禁用状态下单选框的外观。以下是一些可能的CSS属性可以自定义: 确保在你的项目中

    2024年02月04日
    浏览(38)
  • Vue Element-ui Table表格排序

    一.表格中有时候会有排序的需求,如果只针对当前页进行排序,那么前端就可以实现排序,在对应需要排序的字段中,使用sortable字段即可。 二.存在分页的情况时,前端仅仅使用sortable当前页排序已经不能满足我们的需求,无法对所有数据进行排序。这时候我们就要使用后端

    2024年02月11日
    浏览(37)
  • vue2&Element-ui实现表格单元格合并

    由于项目需要实现单元格合并目前只是单页没有做分页处理先上效果图 看下数据结构 Element table提供的api arraySpanMethod columnIndex=0表示从第一列开始 rowIndex表示需要操作的行数 同济医院加上合计有12行从0开始=11 判断条件是rowIndex余12===0 我们打印一下 或者改成 表示从0开始到1

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包