Files
vxe-table/examples/views/table/edit/Remove.vue
xuliangzhan c07aa6ca34 update docs
2021-11-06 23:37:52 +08:00

163 lines
6.6 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: 'test abc' },
{ 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: 'test abc' },
{ id: 10005, name: 'Test5', role: 'Develop', sex: '1', age: 30, address: 'Shanghai' },
{ id: 10006, name: 'Test6', role: 'Designer', sex: '1', age: 21, address: 'test abc' }
],
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: 'test abc' },
{ 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: 'test abc' },
{ id: 10005, name: 'Test5', role: 'Develop', sex: '1', age: 30, address: 'Shanghai' },
{ id: 10006, name: 'Test6', role: 'Designer', sex: '1', age: 21, address: 'test abc' }
]
}
},
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>