Files
vxe-table/examples/views/table/base/Selection.vue
xuliangzhan 30d1bd573a update
2019-06-05 01:21:54 +08:00

231 lines
8.5 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>多选表格基础方式</p>
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable1.toggleRowSelection(tableData[1])">切换第二行选中</vxe-button>
<vxe-button @click="$refs.xTable1.setSelection([tableData[2], tableData[3]], true)">设置第三四行选中</vxe-button>
<vxe-button @click="$refs.xTable1.setAllSelection(true)">设置所有行选中</vxe-button>
<vxe-button @click="$refs.xTable1.clearSelection()">清除所有行选中</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable1"
border
height="300"
:data.sync="tableData">
<vxe-table-column type="selection" width="60"></vxe-table-column>
<vxe-table-column prop="name" label="Name"></vxe-table-column>
<vxe-table-column prop="sex" label="Sex"></vxe-table-column>
<vxe-table-column prop="age" label="Age"></vxe-table-column>
<vxe-table-column prop="address" label="Address" show-overflow></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="checkMethod"/> 方法控制是否允许点击 CheckBox 勾选还可以配置 <table-api-link prop="labelProp"/> 列显示属性</p>
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable2.toggleRowSelection(tableData[1])">切换第二行选中</vxe-button>
<vxe-button @click="$refs.xTable2.setSelection([tableData[2], tableData[3]], true)">设置第三四行选中</vxe-button>
<vxe-button @click="$refs.xTable2.setAllSelection(true)">设置所有行选中</vxe-button>
<vxe-button @click="$refs.xTable2.clearSelection()">清除所有行选中</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable2"
border
height="300"
:data.sync="tableData"
:select-config="{labelProp: 'name', checkMethod}">
<vxe-table-column type="selection" label="All"></vxe-table-column>
<vxe-table-column prop="sex" label="Sex"></vxe-table-column>
<vxe-table-column prop="age" label="Age"></vxe-table-column>
<vxe-table-column prop="address" label="Address" show-overflow></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="select-config"/> 参数使用渲染最快的 <table-api-link prop="labelProp"/> 属性绑定方式</p>
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable3.toggleRowSelection(tableData[1])">切换第二行选中</vxe-button>
<vxe-button @click="$refs.xTable3.setSelection([tableData[2], tableData[3]], true)">设置第三四行选中</vxe-button>
<vxe-button @click="$refs.xTable3.setAllSelection(true)">设置所有行选中</vxe-button>
<vxe-button @click="$refs.xTable3.clearSelection()">清除所有行选中</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable3"
border
height="300"
:data.sync="tableData"
:select-config="{checkProp: 'checked'}">
<vxe-table-column type="selection" width="60"></vxe-table-column>
<vxe-table-column prop="name" label="Name"></vxe-table-column>
<vxe-table-column prop="sex" label="Sex"></vxe-table-column>
<vxe-table-column prop="age" label="Age"></vxe-table-column>
<vxe-table-column prop="address" label="Address" show-overflow></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.xTable1.toggleRowSelection(tableData[1])">切换第二行选中</vxe-button>
<vxe-button @click="$refs.xTable1.setSelection([tableData[2], tableData[3]], true)">设置第三、四行选中</vxe-button>
<vxe-button @click="$refs.xTable1.setAllSelection(true)">设置所有行选中</vxe-button>
<vxe-button @click="$refs.xTable1.clearSelection()">清除所有行选中</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable1"
border
height="300"
:data.sync="tableData">
<vxe-table-column type="selection" width="60"></vxe-table-column>
<vxe-table-column prop="name" label="Name"></vxe-table-column>
<vxe-table-column prop="sex" label="Sex"></vxe-table-column>
<vxe-table-column prop="age" label="Age"></vxe-table-column>
<vxe-table-column prop="address" label="Address" show-overflow></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 10)
}
}
`,
`
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable2.toggleRowSelection(tableData[1])">切换第二行选中</vxe-button>
<vxe-button @click="$refs.xTable2.setSelection([tableData[2], tableData[3]], true)">设置第三、四行选中</vxe-button>
<vxe-button @click="$refs.xTable2.setAllSelection(true)">设置所有行选中</vxe-button>
<vxe-button @click="$refs.xTable2.clearSelection()">清除所有行选中</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable2"
border
height="300"
:data.sync="tableData"
:select-config="{labelProp: 'name', checkMethod}">
<vxe-table-column type="selection" label="All"></vxe-table-column>
<vxe-table-column prop="sex" label="Sex"></vxe-table-column>
<vxe-table-column prop="age" label="Age"></vxe-table-column>
<vxe-table-column prop="address" label="Address" show-overflow></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 10)
},
methods: {
checkMethod ({ row }) {
return row.age > 26
}
}
}
`,
`
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="$refs.xTable3.toggleRowSelection(tableData[1])">切换第二行选中</vxe-button>
<vxe-button @click="$refs.xTable3.setSelection([tableData[2], tableData[3]], true)">设置第三、四行选中</vxe-button>
<vxe-button @click="$refs.xTable3.setAllSelection(true)">设置所有行选中</vxe-button>
<vxe-button @click="$refs.xTable3.clearSelection()">清除所有行选中</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable3"
border
height="300"
:data.sync="tableData"
:select-config="{checkProp: 'checked'}">
<vxe-table-column type="selection" width="60"></vxe-table-column>
<vxe-table-column prop="name" label="Name"></vxe-table-column>
<vxe-table-column prop="sex" label="Sex"></vxe-table-column>
<vxe-table-column prop="age" label="Age"></vxe-table-column>
<vxe-table-column prop="address" label="Address" show-overflow></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 10)
}
}
`
]
}
},
created () {
let list = window.MOCK_DATA_LIST.slice(0, 10)
this.tableData = list
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
checkMethod ({ row }) {
return row.age > 26
}
}
}
</script>