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
    评论
Vue Ant Design是一个基于Vue.js的UI组件库,可以帮助开发者快速构建漂亮且功能强大的前端界面。Vue Ant Design提供了丰富的组件和模板,方便开发者进行页面的构建和设计。 要实现模版下载,首先需要在项目中引入Vue Ant Design相关的依赖。可以通过npm或yarn安装Vue Ant Design并导入相关组件: ``` npm install ant-design-vue ``` 或者 ``` yarn add ant-design-vue ``` 然后,在主组件中导入需要的组件,并在Vue实例中注册它们: ```javascript <template> <div> <a-button type="primary" @click="downloadTemplate">下载模板</a-button> </div> </template> <script> import { Button } from 'ant-design-vue'; export default { components: { 'a-button': Button }, methods: { downloadTemplate() { // 实现模版下载的逻辑 } } } </script> ``` 在上述的示例中,通过引入Button组件,我们在模版中添加了一个按钮,点击按钮时会触发`downloadTemplate`方法。只需要在该方法中实现模版下载的逻辑即可。 模版下载的具体逻辑可以根据实际需求来设计,例如可以使用axios库向服务器发送HTTP请求,获取模版文件,并通过浏览器的下载功能将文件提供给用户下载。 在实现模版下载的逻辑时,还可以参考Vue Ant Design提供的其他组件和功能,例如Modal组件可以用来显示下载进度或下载成功的提示信息。 总之,通过结合Vue Ant Design提供的组件和功能,我们可以轻松地实现模版下载功能,从而提升开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值