如何解决element关于table拖拽排序问题
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容介绍了"如何解决element关于table拖拽排序问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2025年11月08日如何解决element关于table拖拽排序问题
本篇内容介绍了"如何解决element关于table拖拽排序问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
最近在使用element table的时候,经常会遇到排序的问题,如果只是简单的排序的话,element官方已经给出了指定的方法
//table的默认排序方式是按ID排序 顺序为递减 这里可以改成其它 比如 order//设置sortable属性时出现排序按钮
但是,element官方组件并不支持拖拽排序,我在这里引入sortablejs实现拖拽排序的功能
sortablejs GitHub地址
//安装sortable.jsInstall with NPM:$ npm install sortablejs --save//在组件内引入import Sortable from 'sortablejs'//为需要拖拽排序的表格添加ref属性//在数据渲染完毕添加拖拽事件created(){ this.getBanner()},methods:{ async getBanner(val){ await apiGetBanner().then((res)=>{ this.bannerTable = res.data.data; }) this.oldList = this.bannerTable.map(v => v.id); this.newList = this.oldList.slice(); this.$nextTick(() => { this.setSort() //数据渲染完毕执行方法 }) } setSort() { const el = this.$refs.dragTable.$el.querySelectorAll( '.el-table__body-wrapper > table > tbody' )[0]; this.sortable = Sortable.create(el, { // Class name for the drop placeholder, ghostClass: 'sortable-ghost', setData: function(dataTransfer) { dataTransfer.setData('Text', '') }, //拖拽结束执行,evt执向拖拽的参数 onEnd: evt => { //判断是否重新排序 if(evt.oldIndex !== evt.newIndex){ let data = { id:this.bannerTable[evt.oldIndex].id, banner_order:evt.newIndex } //数据提交失败则恢复旧的排序 apiPutBanner(data).catch(()=>{ const targetRow = this.bannerTable.splice(evt.oldIndex, 1)[0]; this.bannerTable.splice(evt.newIndex, 0, targetRow); }) } } }) }}
如果需要列拖拽的话,可以参考下面的代码,和上面是一样的原理,在这里我就不赘述了
//行拖拽 rowDrop() { const tbody = document.querySelector('.el-table__body-wrapper tbody') const _this = this Sortable.create(tbody, { onEnd({ newIndex, oldIndex }) { const currRow = _this.tableData.splice(oldIndex, 1)[0] _this.tableData.splice(newIndex, 0, currRow) } }) }, //列拖拽 columnDrop() { const wrapperTr = document.querySelector('.el-table__header-wrapper tr') this.sortable = Sortable.create(wrapperTr, { animation: 180, delay: 0, onEnd: evt => { const oldItem = this.dropCol[evt.oldIndex] this.dropCol.splice(evt.oldIndex, 1) this.dropCol.splice(evt.newIndex, 0, oldItem) } }) }"如何解决element关于table拖拽排序问题"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
排序
问题
数据
内容
官方
属性
方法
更多
知识
组件
实用
学有所成
接下来
事件
代码
功能
原理
参数
只是
困境
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重庆智能养老软件开发系统
php 优化数据库的方法
摄像机添加录像机显示服务器中断
华亭煤矿网络安全保障工作方案
怎么掌握5g网络技术
水务资产数据库表结构
打印监控软件开发
服务器换全部硬盘
计算机网络技术课程题库
无法连接siri服务器
网络安全软考2018
ibm适合软件开发
网络技术fmp是什么意思
知识数据库 结构
GEO数据库下载哪几个文件
数据库组别
数据库有时间类型吗
蓝页网络技术有限公司
杭州计算机应用软件开发机构
安全的三星手机服务器租用
西奥电梯软件开发工程师薪资
火神软件开发好还是测试好
数据库mdb损坏怎么办
软件开发的一些名词
瑞丰银行软件开发待遇
求生之路2服务器怎么关
谜底为网络安全的灯谜
高性能云服务器高收录域名
电视搭建FTP服务器吗
淘宝软件开发论坛