antdvue table 树形数据一键展开一键收起

antd 表格的一键展开 以及 节点的展开收起功能

在这里插入图片描述
html

 <a-table
      style="margin-top: 20px"
      :columns="columns"
      :data-source="dataSource"
      bordered
      rowKey="key"
      :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
      :expandedRowKeys="expandedRowKeys"
      @expand="onExpand"
      :expanded-keys="expandedKeys"
    >
      <span slot="action" slot-scope="text, record, index">
        <a @click="reloadFn(record)">重置</a>
      </span>
    </a-table>
      columns:[],
	  dataSource:[],
	  expandedRowKeys: [],
      selectedRowKeys: [],
      selectionRows: [],
      expandedKeys: [],

递归方法 和展开收起事件

 recursiveExpand(arr, tmp) {
      for (let i = 0; i < arr.length; i++) {
        tmp.push(arr[i].key)
        if (arr[i].children !== null && arr[i].children !== undefined && arr[i].children.length > 0) {
          this.recursiveExpand(arr[i].children, tmp)
        }
      }
      return tmp
    },
      handleOPen(){
      if(this.openStatus){
        this.expandedRowKeys = [];
        this.$emit('update:openStatus', false)
      }else{
        this.recursiveExpand(this.dataSource, this.expandedRowKeys)
        this.$emit('update:openStatus', true)
      }

    },
    onExpand(expandedKeys, record){
      this.expandedKeys = expandedKeys
      let arr = []
      this.recursiveExpand([record], arr)
      if(expandedKeys){
        this.expandedRowKeys = this.expandedRowKeys.concat(arr)
      }else {
        arr.forEach(v => {
          this.expandedRowKeys.splice( this.expandedRowKeys.indexOf(v),1)
        })
      }
    },
    onSelectChange(selectedRowKeys, selectedRows){
      console.log(selectedRowKeys, selectedRows, 'onSelectChange事件')
      this.selectedRowKeys = selectedRowKeys;
      this.selectionRows = selectedRows;
    },

总结:初始化的时候递归所有数据拿到key给expandedRowKeys赋值。收起清空。
点击节点的时候删除或增加expandedRowKeys里面的key数据(onExpand方法)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值