vxe-table icon indicating copy to clipboard operation
vxe-table copied to clipboard

sortablejs与开启虚拟滚动的表格结合 在滚动后拖动行之后index返回不对

Open YuThree opened this issue 2 years ago • 7 comments

可复现的链接:

https://jsrun.net/wKzKp/edit

问题描述与截图:

sortablejs与开启虚拟滚动的表格结合 在滚动后拖动行之后index返回不对

期望的结果:

返回正确的行号

操作系统:

window10

浏览器版本:

chrome 101.0.4951.54(正式版本) (64 位)

vue 版本:

2.6.11

vxe-table 版本:

3.4.0

YuThree avatar May 09 '22 06:05 YuThree

我是通过操作原始数据解决的,在onStart的时候记录拖拽的数据项oldData,在结束拖拽的时候用 let { fullData } = this.$refs.xxx.getTableData(),遍历fullData找到olddata的oldIndex和newData的newIndex,再把这两个下标抛出去。这样还需要在onEnd的时候利用ghostClass的能力把拖拽的dom元素隐藏一下,不然会多出一个元素,会影响一点交互。

Hgj1999 avatar Feb 07 '23 08:02 Hgj1999

2L + 1 通过 ghostClass 隐藏拖拽的 dom

  1. sortablejs,在 onEnd 时恢复现场(dom复原);
  2. 再通过拓展的 clone 对象获取到 rowId + 当前位置的 rowId
  3. 通过上面两个 rowId 再调整数组位置,然后 reloadData

缺点:

  1. 有固定列时不能联动

oushu1tanqiang1 avatar May 22 '23 07:05 oushu1tanqiang1

2L + 1 通过 ghostClass 隐藏拖拽的 dom

  1. sortablejs,在 onEnd 时恢复现场(dom复原);
  2. 再通过拓展的 clone 对象获取到 rowId + 当前位置的 rowId
  3. 通过上面两个 rowId 再调整数组位置,然后 reloadData

缺点:

  1. 有固定列时不能联动

+1

ChenKaiKe avatar Jun 20 '23 07:06 ChenKaiKe

olddata和newdata怎么拿到啊。返回的对象里面没有这两个值啊

wsndnms1 avatar Jun 30 '23 10:06 wsndnms1

你好,你的来件我已经收到,谢谢,打扰啦。

ChenKaiKe avatar Jun 30 '23 10:06 ChenKaiKe

2L + 1 通过 ghostClass 隐藏拖拽的 dom

  1. sortablejs,在 onEnd 时恢复现场(dom复原);
  2. 再通过拓展的 clone 对象获取到 rowId + 当前位置的 rowId
  3. 通过上面两个 rowId 再调整数组位置,然后 reloadData

缺点:

  1. 有固定列时不能联动 请教下具体怎么拿到这两个id呢?

D7-Dorr avatar Mar 18 '24 13:03 D7-Dorr

你好,你的来件我已经收到,谢谢,打扰啦。

ChenKaiKe avatar Mar 18 '24 13:03 ChenKaiKe