尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

如何用 vxe-table 实现2个树表格可以互相拖拽数据

如何用 vxe-table 实现2个树表格可以互相拖拽数据
📅 发布时间:2026/6/21 0:14:05

如何用 vxe-table 实现2个树表格可以互相拖拽数据
row-drag-config.isCrossTableDrag 启用跨表格、多表格互相拖拽。

查看官网:https://vxetable.cn
gitbub:https://github.com/x-extends/vxe-table
gitee:https://gitee.com/x-extends/vxe-table

效果

Video_2025-09-10_213439-ezgif.com-video-to-gif-converter

代码

跨表拖拽需要确保数据主键不重复,通过 row-config.keyField 指定主键字段名

<template><div><vxe-button status="success" @click="resultEvent1">获取数据1</vxe-button><vxe-grid ref="gridRef1" v-bind="gridOptions1"></vxe-grid><vxe-button status="success" @click="resultEvent2">获取数据2</vxe-button><vxe-grid ref="gridRef2" v-bind="gridOptions2"></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: 300,rowConfig: {drag: true,keyField: 'id'},rowDragConfig: {isCrossDrag: true, // 允许跨级isCrossTableDrag: true // 允许跨表},treeConfig: {transform: true,rowField: 'id',parentField: 'parentId'},columns: [{ type: 'seq', width: 70 },{ field: 'name', title: 'Name', minWidth: 300, treeNode: true, dragSort: true },{ field: 'size', title: 'Size' },{ field: 'type', title: 'Type' },{ field: 'date', title: 'Date' }],data: [{ id: 110000, parentId: null, name: 'Test101', type: 'mp3', size: 1024, date: '2020-08-01' },{ id: 110050, parentId: null, name: 'Test102', type: 'mp4', size: 0, date: '2021-04-01' },{ id: 124300, parentId: 110050, name: 'Test103', type: 'avi', size: 1024, date: '2020-03-01' },{ id: 120045, parentId: 124300, name: 'Test104', type: 'html', size: 600, date: '2021-04-01' },{ id: 110053, parentId: 124300, name: 'Test105', type: 'avi', size: 0, date: '2021-04-01' },{ id: 124330, parentId: 110053, name: 'Test106', type: 'txt', size: 25, date: '2021-10-01' },{ id: 121011, parentId: 110053, name: 'Test107', type: 'pdf', size: 512, date: '2020-01-01' },{ id: 122200, parentId: 110053, name: 'Test108', type: 'js', size: 1024, date: '2021-06-01' },{ id: 123666, parentId: null, name: 'Test109', type: 'xlsx', size: 2048, date: '2020-11-01' },{ id: 123677, parentId: 123666, name: 'Test110', type: 'js', size: 1024, date: '2021-06-01' },{ id: 123671, parentId: 123677, name: 'Test111', type: 'js', size: 1024, date: '2021-06-01' },{ id: 123672, parentId: 123677, name: 'Test112', type: 'js', size: 1024, date: '2021-06-01' },{ id: 123688, parentId: 123666, name: 'Test113', type: 'js', size: 1024, date: '2021-06-01' },{ id: 123681, parentId: 123688, name: 'Test114', type: 'js', size: 1024, date: '2021-06-01' },{ id: 123682, parentId: 123688, name: 'Test115', type: 'js', size: 1024, date: '2021-06-01' },{ id: 124555, parentId: null, name: 'Test116', type: 'avi', size: 224, date: '2020-10-01' },{ id: 124566, parentId: 124555, name: 'Test117', type: 'js', size: 1024, date: '2021-06-01' },{ id: 124577, parentId: 124555, name: 'Test118', type: 'js', size: 1024, date: '2021-06-01' }]
})
const resultEvent1 = () => {const $grid = gridRef1.valueif ($grid) {const { insertRecords, removeRecords } = $grid.getRecordset()const tableData = $grid.getFullData()VxeUI.modal.message({content: `新增:${insertRecords.length} 删除:${removeRecords.length} 现有:${tableData.length}`,status: 'success'})}
}const gridRef2 = ref()
const gridOptions2 = reactive({border: true,height: 300,rowConfig: {drag: true,keyField: 'id'},rowDragConfig: {isCrossDrag: true, // 允许跨级isCrossTableDrag: true // 允许跨表},treeConfig: {transform: true,rowField: 'id',parentField: 'parentId'},columns: [{ type: 'seq', width: 70 },{ field: 'name', title: 'Name', minWidth: 300, treeNode: true, dragSort: true },{ field: 'size', title: 'Size' },{ field: 'type', title: 'Type' },{ field: 'date', title: 'Date' }],data: [{ id: 210000, parentId: null, name: 'Test201', type: 'mp3', size: 1024, date: '2020-08-01' },{ id: 210050, parentId: null, name: 'Test202', type: 'mp4', size: 0, date: '2021-04-01' },{ id: 224300, parentId: 210050, name: 'Test203', type: 'avi', size: 1024, date: '2020-03-01' },{ id: 220045, parentId: 224300, name: 'Test204', type: 'html', size: 600, date: '2021-04-01' },{ id: 210053, parentId: 224300, name: 'Test205', type: 'avi', size: 0, date: '2021-04-01' },{ id: 224330, parentId: 210053, name: 'Test206', type: 'txt', size: 25, date: '2021-10-01' },{ id: 221011, parentId: 210053, name: 'Test207', type: 'pdf', size: 512, date: '2020-01-01' },{ id: 222200, parentId: 210053, name: 'Test208', type: 'js', size: 1024, date: '2021-06-01' },{ id: 223666, parentId: null, name: 'Test209', type: 'xlsx', size: 2048, date: '2020-11-01' },{ id: 223677, parentId: 223666, name: 'Test210', type: 'js', size: 1024, date: '2021-06-01' },{ id: 223671, parentId: 223677, name: 'Test211', type: 'js', size: 1024, date: '2021-06-01' },{ id: 223672, parentId: 223677, name: 'Test212', type: 'js', size: 1024, date: '2021-06-01' },{ id: 223688, parentId: 223666, name: 'Test213', type: 'js', size: 1024, date: '2021-06-01' },{ id: 223681, parentId: 223688, name: 'Test214', type: 'js', size: 1024, date: '2021-06-01' },{ id: 223682, parentId: 223688, name: 'Test215', type: 'js', size: 1024, date: '2021-06-01' },{ id: 224555, parentId: null, name: 'Test216', type: 'avi', size: 224, date: '2020-10-01' },{ id: 224566, parentId: 224555, name: 'Test217', type: 'js', size: 1024, date: '2021-06-01' },{ id: 224577, parentId: 224555, name: 'Test218', type: 'js', size: 1024, date: '2021-06-01' }]
})
const resultEvent2 = () => {const $grid = gridRef2.valueif ($grid) {const { insertRecords, removeRecords } = $grid.getRecordset()const tableData = $grid.getFullData()VxeUI.modal.message({content: `新增:${insertRecords.length} 删除:${removeRecords.length} 现有:${tableData.length}`,status: 'success'})}
}
</script>

https://gitee.com/x-extends/vxe-table

相关新闻

  • CSP 初赛必背
  • 最新安卓版16音轨简谱编辑器软件使用说明
  • 【URP】Unity超分辨率优化实践

最新新闻

  • 国内大模型本地部署与API调用实战指南
  • UE Viewer:解锁虚幻引擎资源查看的10个实用技巧 [特殊字符]
  • 基于LPC4357双核MCU的互联网收音机:AMP架构与任务隔离实战
  • 如何用QuickCut高效处理日常视频:从下载到剪辑的全流程实战
  • SteamAutoCrack:3分钟解决Steam游戏离线运行难题的完整方案
  • MoE模型性能关键:专家网络与训练稳定性远胜路由算法

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号