vue+Ant design实现嵌套table(expandedRowKeys,expandIcon)

vue+Ant design实现嵌套table(expandedRowKeys,expandIcon)

<a-table 
  :columns="columns" 
  :data-source="dataSource" 
  :pagination="false" 
  :expandIcon='expandFirstIcon'
  :expandedRowKeys.sync="firstExpandedRowKeys"
> 
	<!-- 第二层 table 数据 -->
    <template slot="expandedRowRender" slot-scope="value, data, index">
    	<a-table
          :columns="columns"
          :data-source="innerData"
          :pagination="false"
          :expandIcon='expandSecondIcon'
          :expandedRowKeys.sync="secondExpandedRowKeys"
        > 
        </a-table>
     </template>
</a-table>

secondExpandedRowKeys属性是选择要打开的行
值为一个下标的数组 [ 0 ]
expandSecondIcon是一个方法 用来实现 展开和关闭时的 图标

data(){
  return{
    columns,
    dataSource:[],//
    innerData:[],//内嵌table 数据
    firstExpandedRowKeys:[],//内嵌 打开的 行
  }
 },
methods:{
	//内嵌 第一层 图标判断
   expandFirstIcon(props){
     console.log(props);
     //如果有子数据 则显示 展开图标
     if(props.record.childList&&props.record.childList.length>0){
       return (
         <a-icon type="plus" onClick={(e) => {this.openFirstRow(props)}} />
       )
     } else {
        return;
      }
   },
   //打开事件
   openFirstRow(props){
   	  //props.expanded为true则为关闭
      if (props.expanded) {
        this.firstExpandedRowKeys = [];
        this.innerData = [];
      } else {
       //遍历数据列表
        this.dataSource.map((item,index)=>{
        	//将当前点击的 行 下标复制给firstExpandedRowKeys 来锁定展开的行
            if(item.id===props.record.id){
              this.firstExpandedRowKeys = [index];
              this.innerData = props.record.childList;
            }
        })
      }
   },
},

以此类推可以 继续 嵌套
在这里插入图片描述
我项目中一共三层,效果图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值