vue使用 vxe-table實現(xiàn)跨表拖拽多表聯(lián)動互相拖拽數(shù)據(jù)功能
vue 如何使用 vxe-table 來實現(xiàn)跨表拖拽,多表聯(lián)動互相拖拽數(shù)據(jù)
row-drag-config.isCrossTableDrag 啟用跨表格、多表格互相拖拽;跨表拖拽需要確保數(shù)據(jù)主鍵不重復,通過 row-config.keyField 指定主鍵字段名
查看官網(wǎng):https://vxetable.cn
gitbub:https://github.com/x-extends/vxe-table
gitee:https://gitee.com/x-extends/vxe-table
效果
例如。頁面上加載3個表格,需求是實現(xiàn)跨表格直接可以互相拖拽

代碼
多表格直接互相拖拽需要確保數(shù)據(jù)主鍵不重復,通過 row-config.keyField 指定主鍵字段名
<template>
<div>
<vxe-button status="success" @click="resultEvent1">獲取數(shù)據(jù)1</vxe-button>
<vxe-grid ref="gridRef1" v-bind="gridOptions1"></vxe-grid>
<vxe-button status="success" @click="resultEvent2">獲取數(shù)據(jù)2</vxe-button>
<vxe-grid ref="gridRef2" v-bind="gridOptions2"></vxe-grid>
<vxe-button status="success" @click="resultEvent3">獲取數(shù)據(jù)3</vxe-button>
<vxe-grid ref="gridRef3" v-bind="gridOptions3"></vxe-grid>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { VxeUI } from 'vxe-pc-ui'
const gridRef1 = ref()
const gridOptions1 = reactive({
border: true,
height: 240,
rowConfig: {
drag: true,
keyField: 'id'
},
rowDragConfig: {
isCrossTableDrag: true // 允許跨表
},
columns: [
{ field: 'name', title: 'Name' },
{ field: 'role', title: 'Role', dragSort: true },
{ field: 'sex', title: 'Sex' },
{ field: 'age', title: 'Age' },
{ field: 'address', title: 'Address' }
],
data: [
{ id: 10001, name: 'Test11', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
{ id: 10002, name: 'Test12', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
{ id: 10003, name: 'Test13', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
{ id: 10004, name: 'Test14', role: 'Test', sex: 'Women', age: 48, address: 'Guangzhou' },
{ id: 10005, name: 'Test15', role: 'PM', sex: 'Man', age: 38, address: 'Shanghai' },
{ id: 10006, name: 'Test16', role: 'Develop', sex: 'Man', age: 42, address: 'Guangzhou' }
]
})
const resultEvent1 = () => {
const $grid = gridRef1.value
if ($grid) {
const { insertRecords, removeRecords } = $grid.getRecordset()
const tableData = $grid.getFullData()
VxeUI.modal.message({
content: `新增:${insertRecords.length} 刪除:${removeRecords.length} 現(xiàn)有:${tableData.length}`,
status: 'success'
})
}
}
const gridRef2 = ref()
const gridOptions2 = reactive({
border: true,
height: 240,
rowConfig: {
drag: true,
keyField: 'id'
},
rowDragConfig: {
isCrossTableDrag: true // 允許跨表
},
columns: [
{ field: 'name', title: 'Name' },
{ field: 'role', title: 'Role', dragSort: true },
{ field: 'sex', title: 'Sex' },
{ field: 'age', title: 'Age' },
{ field: 'address', title: 'Address' }
],
data: [
{ id: 20001, name: 'Test21', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
{ id: 20002, name: 'Test22', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
{ id: 20003, name: 'Test23', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
{ id: 20004, name: 'Test24', role: 'Test', sex: 'Women', age: 48, address: 'Guangzhou' },
{ id: 20005, name: 'Test25', role: 'PM', sex: 'Man', age: 38, address: 'Shanghai' },
{ id: 20006, name: 'Test26', role: 'Develop', sex: 'Man', age: 42, address: 'Guangzhou' }
]
})
const resultEvent2 = () => {
const $grid = gridRef2.value
if ($grid) {
const { insertRecords, removeRecords } = $grid.getRecordset()
const tableData = $grid.getFullData()
VxeUI.modal.message({
content: `新增:${insertRecords.length} 刪除:${removeRecords.length} 現(xiàn)有:${tableData.length}`,
status: 'success'
})
}
}
const gridRef3 = ref()
const gridOptions3 = reactive({
border: true,
height: 240,
rowConfig: {
drag: true,
keyField: 'id'
},
rowDragConfig: {
isCrossTableDrag: true // 允許跨表
},
columns: [
{ field: 'name', title: 'Name' },
{ field: 'role', title: 'Role', dragSort: true },
{ field: 'sex', title: 'Sex' },
{ field: 'age', title: 'Age' },
{ field: 'address', title: 'Address' }
],
data: [
{ id: 30001, name: 'Test31', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
{ id: 30002, name: 'Test32', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
{ id: 30003, name: 'Test33', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
{ id: 30004, name: 'Test34', role: 'Test', sex: 'Women', age: 48, address: 'Guangzhou' },
{ id: 30005, name: 'Test35', role: 'PM', sex: 'Man', age: 38, address: 'Shanghai' },
{ id: 30006, name: 'Test36', role: 'Develop', sex: 'Man', age: 42, address: 'Guangzhou' }
]
})
const resultEvent3 = () => {
const $grid = gridRef3.value
if ($grid) {
const { insertRecords, removeRecords } = $grid.getRecordset()
const tableData = $grid.getFullData()
VxeUI.modal.message({
content: `新增:${insertRecords.length} 刪除:${removeRecords.length} 現(xiàn)有:${tableData.length}`,
status: 'success'
})
}
}
</script>https://gitee.com/x-extends/vxe-table
到此這篇關于vue使用 vxe-table實現(xiàn)跨表拖拽多表聯(lián)動互相拖拽數(shù)據(jù)功能的文章就介紹到這了,更多相關vue vxe-table跨表拖拽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue3超出文本展示el tooltip實現(xiàn)示例
這篇文章主要為大家介紹了vue3超出文本展示el tooltip實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
Vue3根據(jù)動態(tài)字段綁定v-model的操作代碼
最近在學習vue技術,開發(fā)表格的時候,想把表格做成組件,那查詢條件就需要動態(tài)生成,這就遇到一個問題,vue怎么動態(tài)給v-model變量值,本文通過實例代碼給大家介紹,對Vue3動態(tài)綁定v-model實例代碼感興趣的朋友一起看看吧2022-10-10
Vue3項目中優(yōu)雅實現(xiàn)微信授權登錄的方法
用戶在微信端中訪問第三方網(wǎng)頁,可以通過微信網(wǎng)頁授權機制獲取用戶的基本信息,進而實現(xiàn)所需要的業(yè)務邏輯,這篇文章主要給大家介紹了關于Vue3項目中優(yōu)雅實現(xiàn)微信授權登錄的相關資料,需要的朋友可以參考下2021-09-09

