Files
vxe-table/examples/views/table/edit/Remove.vue

200 lines
7.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(demo1.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="demo1.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="typescript">{{ demoCodes[1] }}</pre-code>
</pre>
</div>
</template>
<script lang="ts">
import { defineComponent, reactive, ref } from 'vue'
import { VXETable } from '../../../../packages/all'
import { VxeTableInstance } from '../../../../types/index'
export default defineComponent({
setup () {
const demo1 = reactive({
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 从入门到放弃' }
]
})
const xTable = ref({} as VxeTableInstance)
const insertEvent = async (row: any) => {
const $table = xTable.value
const record = {
sex: '1'
}
const { row: newRow } = await $table.insertAt(record, row)
await $table.setActiveCell(newRow, 'sex')
}
const removeEvent = (row: any) => {
const $table = xTable.value
VXETable.modal.confirm('您确定要删除该数据?').then(type => {
if (type === 'confirm') {
$table.remove(row)
}
})
}
const getRemoveEvent = () => {
const $table = xTable.value
const removeRecords = $table.getRemoveRecords()
VXETable.modal.alert(removeRecords.length)
}
const getSelectionEvent = () => {
const $table = xTable.value
const selectRecords = $table.getCheckboxRecords()
VXETable.modal.alert(selectRecords.length)
}
const saveEvent = () => {
const $table = xTable.value
const { insertRecords, removeRecords, updateRecords } = $table.getRecordset()
VXETable.modal.alert(`insertRecords=${insertRecords.length} removeRecords=${removeRecords.length} updateRecords=${updateRecords.length}`)
}
return {
xTable,
demo1,
insertEvent,
removeEvent,
getRemoveEvent,
getSelectionEvent,
saveEvent,
demoCodes: [
`
<vxe-toolbar>
<template #buttons>
<vxe-button @click="insertEvent()">在第1行插入</vxe-button>
<vxe-button @click="removeEvent(demo1.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="demo1.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>
`,
`
import { defineComponent, reactive, ref } from 'vue'
import { VXETable, VxeTableInstance } from 'vxe-table'
export default defineComponent({
setup () {
const demo1 = reactive({
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 从入门到放弃' }
]
})
const xTable = ref({} as VxeTableInstance)
const insertEvent = async (row: any) => {
const $table = xTable.value
const record = {
sex: '1'
}
const { row: newRow } = await $table.insertAt(record, row)
await $table.setActiveCell(newRow, 'sex')
}
const removeEvent = (row: any) => {
const $table = xTable.value
VXETable.modal.confirm('您确定要删除该数据?').then(type => {
if (type === 'confirm') {
$table.remove(row)
}
})
}
const getRemoveEvent = () => {
const $table = xTable.value
const removeRecords = $table.getRemoveRecords()
VXETable.modal.alert(removeRecords.length)
}
const getSelectionEvent = () => {
const $table = xTable.value
const selectRecords = $table.getCheckboxRecords()
VXETable.modal.alert(selectRecords.length)
}
const saveEvent = () => {
const $table = xTable.value
const { insertRecords, removeRecords, updateRecords } = $table.getRecordset()
VXETable.modal.alert(\`insertRecords=\${insertRecords.length} removeRecords=\${removeRecords.length} updateRecords=\${updateRecords.length}\`)
}
return {
xTable,
demo1,
insertEvent,
removeEvent,
getRemoveEvent,
getSelectionEvent,
saveEvent
}
}
})
`
]
}
}
})
</script>