VXEtable/VXEgrid 表格sorttablejs实现行列表格拖拽功能

39 篇文章 1 订阅

VXEtable/VXEgrid 表格sorttablejs实现行列拖拽功能


tableKey:0
1、配置vxe-grid组件:
:row-config="{useKey: true}"   
:scroll-y="{enabled: false}"
:key="tableKey"
2、导包
import Sortable from 'sortablejs'
3、实现拖拽函数
        //行拖拽
        rowDrop() {
            this.$nextTick(() => {
               
                let xTable = this.$refs.tableRef
                this.sortableObj = Sortable.create(xTable.$el.querySelector('.body--wrapper>.vxe-table--body tbody'), {
                    handle: 'td',
                    onEnd: ({
                        newIndex,
                        oldIndex
                    }) => {
                        // 换序操作
                        //let tmpdata = this.tdata.map(el=>{return el._X_ID})
                        let currRow = this.tdata.splice(oldIndex, 1)[0]
                        this.tdata.splice(newIndex, 0, currRow)
                        //this.tdata.forEach((el,index) => {el._X_ID = tmpdata[index]})
 
                        //const codeCurrRow = this.code.splice(oldIndex, 1)[0]
                        //this.code.splice(newIndex, 0, codeCurrRow)
 
                        this.tableKey ++;
                    }
                })
            })
        },
        //列拖拽
        columnDrop() {
            this.$nextTick(() => {
                let xTable = this.$refs.tableRef
                this.sortableObj2 = Sortable.create(xTable.$el.querySelector('.body--wrapper>.vxe-table--header .vxe-header--row'), {
                    handle: '.zb-h',
                    onEnd: ({
                        newIndex,
                        oldIndex
                    }) => {
                        // 换序操作
                        let currRow = this.columns.splice(oldIndex, 1)[0]
                        this.columns.splice(newIndex, 0, currRow)
                        xTable.reloadColumn(this.columns)
                        this.tableKey ++;
                    }
                })
            })
 4、调用拖拽函数
this.rowDrop() ;
this.columnDrop();
--以上4步即可对普通表格进行拖拽内容换序

Q:若有锁定列固定列则无法进行拖拽怎么办?

A:因为vxetable对锁定列固定列的做法是多复制一个实例,即两张表,进行的重叠效果。所以以上使用的querySelector中的el是无法select到的。

行拖拽解决方法:

5、增加vxe-grid配置项
:tooltip-config="{showAll: true, contentMethod: showTooltipMethod}"
@cell-mouseenter="rowDrop"
 
 
// 实现showTooltipMethod方法
showTooltipMethod(){
    return '' ;
}
6、修改querySelector中的el
xTable.$el.querySelector('.fixed-left--wrapper>.vxe-table--body tbody')
7、watch监控tableKey
tableKey : {
            handler: function (nv,ov) {
                if (this.sortableObj2){
                    this.sortableObj2.destroy() ;
                }
                this.columnDrop() ;
            },
            immediate: true
 }
总结:根据querySelector中的el进行拖拽,有固定列锁定列的情况下需使用tableKey来刷新表格
————————————————
版权声明:本文为CSDN博主「阿Ruey」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38149488/article/details/125502964

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值