如何解决element关于table拖拽排序问题
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容介绍了"如何解决element关于table拖拽排序问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2025年01月18日如何解决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安全错误
数据库的锁怎样保障安全
网络安全问题情侣文案
网络安全技术是指哪方面
烟台通路网络技术有限公司
用友财务软件服务器地址
网络安全借助第三方技术
服务器如何区分请求设备
银行软件开发社会招聘信息
网络技术对沟通的影响
网络安全徐安全简报
宁波市软件开发等保级别要求
和平精英换服务器的手机怎么弄
小学生网络安全课说课稿
多选框怎么添加到数据库
2008数据库如何删除
软件开发团队中的角色
r语言输入换行输入数据库
ORACLE数据库下载视频
上海服务器机柜规格
软件定义无服务器计算
湖北网络技术分类产品介绍
电大数据库应用技术笔试题目
C语言和网络安全结合
数据库安全控制的主要手段
图片匹配数据库技术
db2数据库分页
登录ftp服务器需要网络吗
菜单设计软件开发
网络安全进校园教育活动
伍斯特理工学院数据库
淮北安卓软件开发需要多少钱