Files
vxe-table/examples/views/table/advanced/Expand.vue
xuliangzhan ac68fa40a1 update
2019-07-26 16:10:07 +08:00

357 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<p>通过设置 <table-api-link prop="expand-config"/> 属性和 type=<table-api-link prop="expand"/> <table-column-api-link prop="slot"/> 可以开启展开行功能</p>
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable.toggleRowExpansion(tableData[1])">切换第二行展开</vxe-button>
<vxe-button @click="$refs.xTable.setRowExpansion([tableData[2], tableData[3]], true)">设置第三四行展开</vxe-button>
<vxe-button @click="$refs.xTable.setAllRowExpansion(true)">设置所有行展开</vxe-button>
<vxe-button @click="$refs.xTable.clearRowExpand()">关闭所有行展开</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable"
border
:data.sync="tableData"
@toggle-expand-change="toggleExpandChangeEvent">
<vxe-table-column type="index" width="60"></vxe-table-column>
<vxe-table-column type="expand" width="60">
<template v-slot="{ row, rowIndex }">
<template v-if="rowIndex === 1">
<vxe-table
border
:data.sync="tableData">
<vxe-table-column field="role" title="Role"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
</template>
<template v-else>
<ul>
<li>
<span>ID</span>
<span>{{ row.id }}</span>
</li>
<li>
<span>Name</span>
<span>{{ row.name }}</span>
</li>
<li>
<span>UpdateTime</span>
<span>{{ row.updateTime }}</span>
</li>
<li>
<span>CreateTime</span>
<span>{{ row.createTime }}</span>
</li>
</ul>
</template>
</template>
</vxe-table-column>
<vxe-table-column field="name" title="Name"></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[0] }}</code>
<code class="javascript">{{ demoCodes[1] }}</code>
</pre>
<p>默认展开指定行通过 <table-api-link prop="expandRowKeys"/> 参数设置默认展开行指定默认值需要有 <table-api-link prop="row-id"/></p>
<vxe-table
border
row-id="id"
:expand-config="{expandRowKeys: ['1']}"
:data.sync="tableData">
<vxe-table-column type="index" width="60"></vxe-table-column>
<vxe-table-column type="expand" width="60">
<template v-slot="{ row, rowIndex }">
<template v-if="rowIndex === 1">
<vxe-table
border
:data.sync="tableData">
<vxe-table-column field="role" title="Role"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
</template>
<template v-else>
<ul>
<li>
<span>ID</span>
<span>{{ row.id }}</span>
</li>
<li>
<span>Name</span>
<span>{{ row.name }}</span>
</li>
<li>
<span>UpdateTime</span>
<span>{{ row.updateTime }}</span>
</li>
<li>
<span>CreateTime</span>
<span>{{ row.createTime }}</span>
</li>
</ul>
</template>
</template>
</vxe-table-column>
<vxe-table-column field="name" title="Name"></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[2] }}</code>
<code class="javascript">{{ demoCodes[3] }}</code>
</pre>
<p>默认展开所有行通过 <table-api-link prop="expandAll"/> 参数设置默认展开所有行</p>
<vxe-table
border
:data.sync="tableData"
:expand-config="{expandAll: true}">
<vxe-table-column type="index" width="60"></vxe-table-column>
<vxe-table-column type="expand" width="60">
<template v-slot="{ row }">
<ul>
<li>
<span>ID</span>
<span>{{ row.id }}</span>
</li>
<li>
<span>Name</span>
<span>{{ row.name }}</span>
</li>
<li>
<span>UpdateTime</span>
<span>{{ row.updateTime }}</span>
</li>
<li>
<span>CreateTime</span>
<span>{{ row.createTime }}</span>
</li>
</ul>
</template>
</vxe-table-column>
<vxe-table-column field="name" title="Name"></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[4] }}</code>
<code class="javascript">{{ demoCodes[5] }}</code>
</pre>
</div>
</template>
<script>
import hljs from 'highlight.js'
export default {
data () {
return {
tableData: [],
demoCodes: [
`
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable.toggleRowExpansion(tableData[1])">切换第二行展开</vxe-button>
<vxe-button @click="$refs.xTable.setRowExpansion([tableData[2], tableData[3]], true)">设置第三、四行展开</vxe-button>
<vxe-button @click="$refs.xTable.setAllRowExpansion(true)">设置所有行展开</vxe-button>
<vxe-button @click="$refs.xTable.clearRowExpand()">关闭所有行展开</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable"
border
:data.sync="tableData"
@toggle-expand-change="toggleExpandChangeEvent">
<vxe-table-column type="index" width="60"></vxe-table-column>
<vxe-table-column type="expand" width="60">
<template v-slot="{ row, rowIndex }">
<template v-if="rowIndex === 1">
<vxe-table
border
:data.sync="tableData">
<vxe-table-column field="role" title="Role"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
</template>
<template v-else>
<ul>
<li>
<span>ID</span>
<span>{{ row.id }}</span>
</li>
<li>
<span>Name</span>
<span>{{ row.name }}</span>
</li>
<li>
<span>UpdateTime</span>
<span>{{ row.updateTime }}</span>
</li>
<li>
<span>CreateTime</span>
<span>{{ row.createTime }}</span>
</li>
</ul>
</template>
</template>
</vxe-table-column>
<vxe-table-column field="name" title="Name"></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 3)
},
methods: {
toggleExpandChangeEvent ({ row }) {
console.log('行展开、收起事件')
}
}
}
`,
`
<vxe-table
border
row-id="id"
:expand-config="{expandRowKeys: ['1']}"
:data.sync="tableData">
<vxe-table-column type="index" width="60"></vxe-table-column>
<vxe-table-column type="expand" width="60">
<template v-slot="{ row, rowIndex }">
<template v-if="rowIndex === 1">
<vxe-table
border
:data.sync="tableData">
<vxe-table-column field="role" title="Role"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
</template>
<template v-else>
<ul>
<li>
<span>ID</span>
<span>{{ row.id }}</span>
</li>
<li>
<span>Name</span>
<span>{{ row.name }}</span>
</li>
<li>
<span>UpdateTime</span>
<span>{{ row.updateTime }}</span>
</li>
<li>
<span>CreateTime</span>
<span>{{ row.createTime }}</span>
</li>
</ul>
</template>
</template>
</vxe-table-column>
<vxe-table-column field="name" title="Name"></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 3)
}
}
`,
`
<vxe-table
border
:data.sync=
"tableData"
:expand-config="{expandAll: true}">
<vxe-table-column type="index" width="60"></vxe-table-column>
<vxe-table-column type="expand" width="60">
<template v-slot="{ row }">
<ul>
<li>
<span>ID</span>
<span>{{ row.id }}</span>
</li>
<li>
<span>Name</span>
<span>{{ row.name }}</span>
</li>
<li>
<span>UpdateTime</span>
<span>{{ row.updateTime }}</span>
</li>
<li>
<span>CreateTime</span>
<span>{{ row.createTime }}</span>
</li>
</ul>
</template>
</vxe-table-column>
<vxe-table-column field="name" title="Name"></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 3)
}
}
`
]
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 3)
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
toggleExpandChangeEvent ({ row }) {
console.log('行展开、收起事件')
}
}
}
</script>