※前提条件:本文基于 Vue 2.0 创作
prop 属性对应对象中的键名,用来填充数据;label 属性定义表格的列名;width 属性定义表格的列宽。
<template> <el-table :data="tableData" class="data_table"> <el-table-column prop="number" label="编号" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="info" label="描述"> </el-table-column> </el-table> </template>
data () { return { tableData: [{ number: '2016001', name: '小明', info: '这是第一条数据' }, { number: '2016002', name: '小明', info: '这是第二条数据' }, { number: '2016003', name: '小明', info: '这是第三条数据' }, { number: '2016004', name: '小明', info: '这是第四条数据' }, { number: '2016005', name: '小明', info: '这是第五条数据' }] } }
<el-table-column prop="endTime" label="时间" width="90" :formatter="formatDate"> </el-table-column>
methods: { formatDate(row, column) { // 获取单元格数据 let data = row[column.property] if(data == null) { return null } let dt = new Date(data) return dt.getFullYear() + '/' + (dt.getMonth() + 1) + '/' + dt.getDate() }, }
element-ui 中 el-table-column 里面设置 type="expand" 可设置 table 全部展开,或者展开有数据的部分。如果想让全部展开的话添加 efault-expand-all="true"
<el-table :default-expand-all="true"> <el-table-column type="expand"> ...
需要在table绑定两个属性
expand-row-key="expand" 和 row-key="method" method 里面设置需要展开的行
全部展开/折叠
//按钮 <el-button size="mini" @click="btnExpand" style="margin-top: 8px">{{ this.isExpand ? '折叠' : '展开' }}</el-button> <el-table ref="ctab" >... 省略 ... </el-table> data() { return { isExpand: false, } method(){ btnExpand() { this.actionUnfoldFunc(!this.isExpand); }, //btnExpand actionUnfoldFunc(isAss) { this.handleExpand(isAss); }, handleExpand(isAss) { // 此判断是否为展开状态或折叠状态--若展开折叠是同一个按钮则无需传参和加此if if (this.isExpand == isAss) { return; } this.isExpand = !this.isExpand; // this.data为返回的二级数据data this.$nextTick(() => { this.forArr(this.data, this.isExpand); }); }, //handleExpand // 遍历 forArr(arr, isExpand) { arr.forEach((i) => { // toggleRowExpansion见element文档 this.$refs.ctab.toggleRowExpansion(i, isExpand); if (i.children) { this.forArr(i.children, isExpand); } }); }, //forArr }
コメント: