Files
vxe-table/examples/views/table/edit/Remove.vue
2021-08-29 17:07:09 +08:00

163 lines
6.7 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 class="tip">调用 <table-api-link prop="remove"/> 删除指定行数据<br><span class="red">当移除行元素后由于 vue 缓存造成事件错乱应该使用 <table-api-link prop="row-key "/>来避免该问题</span></p>
<vxe-toolbar>
<template #buttons>
<vxe-button @click="insertEvent()">在第1行插入</vxe-button>
<vxe-button @click="removeEvent(tableData[1])">删除第2行</vxe-button>
<vxe-button @click="$refs.xTable.removeCheckboxRow()">删除选中</vxe-button>
<vxe-button @click="getRemoveEvent">获取删除</vxe-button>
<vxe-button @click="getSelectionEvent">获取选中</vxe-button>
<vxe-button icon="fa fa-save" @click="saveEvent">保存</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable"
border
show-overflow
:data="tableData"
:edit-config="{trigger: 'click', mode: 'cell'}">
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="name" title="Name" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="sex" title="Sex" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="age" title="Age" :edit-render="{name: 'input'}"></vxe-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<pre-code class="xml">{{ demoCodes[0] }}</pre-code>
<pre-code class="javascript">{{ demoCodes[1] }}</pre-code>
</pre>
</div>
</template>
<script>
export default {
data () {
return {
tableData: [
{ id: 10001, name: 'Test1', role: 'Develop', sex: '0', age: 28, address: 'vxe-table 从入门到放弃' },
{ id: 10002, name: 'Test2', role: 'Test', sex: '1', age: 22, address: 'Guangzhou' },
{ id: 10003, name: 'Test3', role: 'PM', sex: '0', age: 32, address: 'Shanghai' },
{ id: 10004, name: 'Test4', role: 'Designer', sex: '1', age: 23, address: 'vxe-table 从入门到放弃' },
{ id: 10005, name: 'Test5', role: 'Develop', sex: '1', age: 30, address: 'Shanghai' },
{ id: 10006, name: 'Test6', role: 'Designer', sex: '1', age: 21, address: 'vxe-table 从入门到放弃' }
],
demoCodes: [
`
<vxe-toolbar>
<template #buttons>
<vxe-button @click="insertEvent()">在第1行插入</vxe-button>
<vxe-button @click="removeEvent(tableData[1])">删除第2行</vxe-button>
<vxe-button @click="$refs.xTable.removeCheckboxRow()">删除选中</vxe-button>
<vxe-button @click="getRemoveEvent">获取删除</vxe-button>
<vxe-button @click="getSelectionEvent">获取选中</vxe-button>
<vxe-button icon="fa fa-save" @click="saveEvent">保存</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
ref="xTable"
border
show-overflow
:data="tableData"
:edit-config="{trigger: 'click', mode: 'cell'}">
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="name" title="Name" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="sex" title="Sex" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="age" title="Age" :edit-render="{name: 'input'}"></vxe-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: [
{ id: 10001, name: 'Test1', role: 'Develop', sex: '0', age: 28, address: 'vxe-table 从入门到放弃' },
{ id: 10002, name: 'Test2', role: 'Test', sex: '1', age: 22, address: 'Guangzhou' },
{ id: 10003, name: 'Test3', role: 'PM', sex: '0', age: 32, address: 'Shanghai' },
{ id: 10004, name: 'Test4', role: 'Designer', sex: '1', age: 23, address: 'vxe-table 从入门到放弃' },
{ id: 10005, name: 'Test5', role: 'Develop', sex: '1', age: 30, address: 'Shanghai' },
{ id: 10006, name: 'Test6', role: 'Designer', sex: '1', age: 21, address: 'vxe-table 从入门到放弃' }
]
}
},
methods: {
async insertEvent (row) {
const $table = this.$refs.xTable
const record = {
sex: '1'
}
const { row: newRow } = await $table.insertAt(record, row)
await $table.setActiveCell(newRow, 'sex')
},
removeEvent (row) {
this.$XModal.confirm('您确定要删除该数据?').then(type => {
const $table = this.$refs.xTable
if (type === 'confirm') {
$table.remove(row)
}
})
},
getRemoveEvent () {
const $table = this.$refs.xTable
const removeRecords = $table.getRemoveRecords()
this.$XModal.alert(removeRecords.length)
},
getSelectionEvent () {
const $table = this.$refs.xTable
const selectRecords = $table.getCheckboxRecords()
this.$XModal.alert(selectRecords.length)
},
saveEvent () {
const $table = this.$refs.xTable
const { insertRecords, removeRecords, updateRecords } = $table.getRecordset()
this.$XModal.alert(\`insertRecords=\${insertRecords.length} removeRecords=\${removeRecords.length} updateRecords=\${updateRecords.length}\`)
}
}
}
`
]
}
},
methods: {
async insertEvent (row) {
const $table = this.$refs.xTable
const record = {
sex: '1'
}
const { row: newRow } = await $table.insertAt(record, row)
await $table.setActiveCell(newRow, 'sex')
},
removeEvent (row) {
this.$XModal.confirm('您确定要删除该数据?').then(type => {
const $table = this.$refs.xTable
if (type === 'confirm') {
$table.remove(row)
}
})
},
getRemoveEvent () {
const $table = this.$refs.xTable
const removeRecords = $table.getRemoveRecords()
this.$XModal.alert(removeRecords.length)
},
getSelectionEvent () {
const $table = this.$refs.xTable
const selectRecords = $table.getCheckboxRecords()
this.$XModal.alert(selectRecords.length)
},
saveEvent () {
const $table = this.$refs.xTable
const { insertRecords, removeRecords, updateRecords } = $table.getRecordset()
this.$XModal.alert(`insertRecords=${insertRecords.length} removeRecords=${removeRecords.length} updateRecords=${updateRecords.length}`)
}
}
}
</script>