vue2实现表格嵌套表格----二级列表

一、引入view-ui

1、打开新建的项目,打开终端,下载view-ui依赖包

在这里插入图片描述
到这一步,说明下载成功了
在这里插入图片描述

2、main.js引入

在这里插入图片描述

二、项目加载表格

1、打开iview官网,找到表格这一项,然后看到有一个是可下拉的表格

在这里插入图片描述
根据下面这种图片可看到,想要实现下拉的表格,首先再colums数据设置这一项,指定type为expand,
然后如果想要再下拉配置项中设置复杂内容的时候,可以使用render函数
在这里插入图片描述
然后,开写,先把内容粘贴到项目中去,

<template>
  <div class="hello">
    <Table :columns="columns" :data="data"></Table>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  data() {
    return {
      columns: [
                    {
                        type: 'expand',
                        width: 50,
                        render: (h, { row: { name, age } }) => {
                            return h('div', name + '-' + age)
                        }
                    },
                    {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    }
                ],
                data: [
                    {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        job: 'Data engineer',
                        interest: 'badminton',
                        birthday: '1991-05-14',
                        book: 'Steve Jobs',
                        movie: 'The Prestige',
                        music: 'I Cry'
                    },
                    {
                        name: 'Jim Green',
                        age: 25,
                        address: 'London No. 1 Lake Park',
                        job: 'Data Scientist',
                        interest: 'volleyball',
                        birthday: '1989-03-18',
                        book: 'My Struggle',
                        movie: 'Roman Holiday',
                        music: 'My Heart Will Go On'
                    },
                    {
                        name: 'Joe Black',
                        age: 30,
                        address: 'Sydney No. 1 Lake Park',
                        job: 'Data Product Manager',
                        interest: 'tennis',
                        birthday: '1992-01-31',
                        book: 'Win',
                        movie: 'Jobs',
                        music: 'Don’t Cry'
                    },
                    {
                        name: 'Jon Snow',
                        age: 26,
                        address: 'Ottawa No. 2 Lake Park',
                        job: 'Data Analyst',
                        interest: 'snooker',
                        birthday: '1988-7-25',
                        book: 'A Dream in Red Mansions',
                        movie: 'A Chinese Ghost Story',
                        music: 'actor'
                    }
                ]
    }
  },
}
</script>


<style scoped>

</style>

然后就可以看到项目中的表格了,我这里是新开了一个项目,所以页面上什么都没有
在这里插入图片描述
此时的表格下拉功能就实现了,然后再此功能上添加二级表头,可以看到官网说的使用render函数,于是,我们就写一个render函数

三、修改为二级表格

1、新建一个组件,里面写上自己想要的表格格式,我这里为了方便,于是直接引用官网的第一个表格

<template>
  <div>
    <Table border :columns="columns" :data="data"></Table>
 </div>
</template>
<script >
export default {
  props: {

   },
   data() {
    return {
      columns: [
                    {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    }
                ],
                data: [
                    {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        date: '2016-10-03'
                    },
                    {
                        name: 'Jim Green',
                        age: 24,
                        address: 'London No. 1 Lake Park',
                        date: '2016-10-01'
                    },
                    {
                        name: 'Joe Black',
                        age: 30,
                        address: 'Sydney No. 1 Lake Park',
                        date: '2016-10-02'
                    },
                    {
                        name: 'Jon Snow',
                        age: 26,
                        address: 'Ottawa No. 2 Lake Park',
                        date: '2016-10-04'
                    }
                ]
    }
   },
  created() {},
  mounted() {},
  beforeDestroy() {}
}
</script>
<style scoped></style>

2、在HelloWorld.vue页面引入这个组件,并注册

// 引入
import SecontTable from './SecontTable.vue';
// 注册
 components: {
    SecontTable,
  },

3、HelloWorld.vue-----在render函数中,调用这个组件

并且传了个值dataList1到组件中去,记得返回组件中接收一下这个列表

   render: (h, { row }) => {
            return h(SecontTable, {
              props: {
                dataList1: row,
              },
              on: {
                onsubmit: () => {
                  console.log('-------------------');
                },
              },
            });
          },
// SecontTable.vue 中接收传值,我这里先不使用,如果后期需要根据这个里面的内容调接口或者渲染内容,直接使用就可以
props: {
    dataList1:{
      type:Array
    }
   },

四、到这里就可以看到完整的效果了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值