vue使用 vxe-table實(shí)現(xiàn)跨表拖拽多表聯(lián)動(dòng)互相拖拽數(shù)據(jù)功能
vue 如何使用 vxe-table 來實(shí)現(xiàn)跨表拖拽,多表聯(lián)動(dòng)互相拖拽數(shù)據(jù)
row-drag-config.isCrossTableDrag 啟用跨表格、多表格互相拖拽;跨表拖拽需要確保數(shù)據(jù)主鍵不重復(fù),通過 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個(gè)表格,需求是實(shí)現(xiàn)跨表格直接可以互相拖拽

代碼
多表格直接互相拖拽需要確保數(shù)據(jù)主鍵不重復(fù),通過 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
到此這篇關(guān)于vue使用 vxe-table實(shí)現(xiàn)跨表拖拽多表聯(lián)動(dòng)互相拖拽數(shù)據(jù)功能的文章就介紹到這了,更多相關(guān)vue vxe-table跨表拖拽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何監(jiān)聽Vue項(xiàng)目報(bào)錯(cuò)的4種方式?
本文主要介紹了如何監(jiān)聽Vue項(xiàng)目報(bào)錯(cuò)的4種方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Vue在項(xiàng)目中如何引入本地Json數(shù)據(jù)
這篇文章主要介紹了Vue在項(xiàng)目中如何引入本地Json數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
vue3超出文本展示el tooltip實(shí)現(xiàn)示例
這篇文章主要為大家介紹了vue3超出文本展示el tooltip實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Vue異步更新機(jī)制及$nextTick原理的深入講解
最近在學(xué)習(xí)一些底層方面的知識,所以想做個(gè)系列嘗試去聊聊這些比較復(fù)雜又很重要的知識點(diǎn),下面這篇文章主要給大家介紹了關(guān)于Vue異步更新機(jī)制及$nextTick原理的相關(guān)資料,需要的朋友可以參考下2022-04-04
Vue3根據(jù)動(dòng)態(tài)字段綁定v-model的操作代碼
最近在學(xué)習(xí)vue技術(shù),開發(fā)表格的時(shí)候,想把表格做成組件,那查詢條件就需要?jiǎng)討B(tài)生成,這就遇到一個(gè)問題,vue怎么動(dòng)態(tài)給v-model變量值,本文通過實(shí)例代碼給大家介紹,對Vue3動(dòng)態(tài)綁定v-model實(shí)例代碼感興趣的朋友一起看看吧2022-10-10
Vue3項(xiàng)目中優(yōu)雅實(shí)現(xiàn)微信授權(quán)登錄的方法
用戶在微信端中訪問第三方網(wǎng)頁,可以通過微信網(wǎng)頁授權(quán)機(jī)制獲取用戶的基本信息,進(jìn)而實(shí)現(xiàn)所需要的業(yè)務(wù)邏輯,這篇文章主要給大家介紹了關(guān)于Vue3項(xiàng)目中優(yōu)雅實(shí)現(xiàn)微信授權(quán)登錄的相關(guān)資料,需要的朋友可以參考下2021-09-09
vue父組件點(diǎn)擊觸發(fā)子組件事件的實(shí)例講解
下面小編就為大家分享一篇vue父組件點(diǎn)擊觸發(fā)子組件事件的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02

