Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

您好,ux-grid使用 sortablejs 实现行移动,由于是虚拟表格。拖拽后处理数据比较棘手,请问相关的思路吗 #176

Open
mmclofe opened this issue Aug 26, 2022 · 19 comments

Comments

@mmclofe
Copy link

mmclofe commented Aug 26, 2022

拖拽后会返回给我当前拖拽行的数据,我能拿到当前拖拽行的row-key,通过row-key可找到当前拖拽的数据源,但是从sortable ,end方法返回给我的对象中找不到任何关于拖拽后当前拖拽行的目的位置。因此拿不到拖拽后数据源的下标值。也无法进行改变数据。请问您对于此类问题有处理的相关思路吗

@mmclofe
Copy link
Author

mmclofe commented Aug 29, 2022

@livelyPeng 请问下有可实现的思路吗,若有可实现的思路麻烦指导一下呢,谢谢

@parlay96
Copy link
Member

parlay96 commented Aug 31, 2022

我也没有想法,但是行移动 是自己去扩展,确实有你说的那个下标问题。

@parlay96
Copy link
Member

image

@parlay96
Copy link
Member

parlay96 commented Aug 31, 2022

image
那个newIndex不能去splice原始表格数据,应该去找出这个索引 在正在当前屏中的表格数据中的那个item,然后找到item就好了。你就可以根据item 去匹配他在原始表格数据中的关系了。

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

@livelyPeng 不好意思,可能是我理解能力不够,我还是没有明白怎么去找拖拽后数据的newIndex呢?可以再详细说下吗,谢谢了
image

@parlay96
Copy link
Member

image
image
现在的问题其实就是你不应该学文档,用newIndex去splice 表格原始的数据data啊。你用这个newIndex去匹配 正在渲染当前屏中的 table数据,

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

我明白了,根据sortable 返回的newIndex可以得到当前拖拽的行数据在当前渲染表体拖拽后的应该插入的位置,从而可以拿到当前拖拽行的上一个数据或者下一个数据的唯一key值,再通过这个key值去原始表格数据中寻找拖拽行数据应该插入的下标索引值newIndex。便可以达到改变原始数据的目的
image

@parlay96
Copy link
Member

yes

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

谢谢

@parlay96
Copy link
Member

不过这个过程坑多,自己去解决些 问题

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

好的,谢谢耐心解答

@parlay96
Copy link
Member

parlay96 commented Aug 31, 2022

还有个简单的方法

@parlay96
Copy link
Member

parlay96 commented Aug 31, 2022

image
这个是当前表格渲染中的数据,找出这个数据的第一条,和最后一条。 查询这个数据在原始数据中的索引值 开头和结尾。
在你拖动之后,比如:你查询到的开头和结尾在原始数据中的位置是 10, 20, 那么你拖动后,你就是 10 + 你现在拖动的索引值。 你必须找出当前渲染数据,在 你原始数据中的位置,这样才能根本的改变 原始数据的拖拽排序

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

这个思路棒,谢谢

@parlay96
Copy link
Member

还不是那么简单,我思考了下,这里还涉及到,他可能拖动前是第一屏,然后拖动中他可能去拖动到第二屏了。因为拖动过程 存在他可能去滑动滚动条。我们并不知道,他开始。
image
所以 这个oldIndex 未必是结束屏的索引,这是onEnd时候的 @mmclofe

@parlay96
Copy link
Member

我们可能还需要拖动前的事件,拖动前算一次他在原始表格中的索引, 拖动后还需要。不然还是有bug, 边界地方需要考虑!

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

我是这样写的,没有用到oldIndex,只要拿到当前拖拽的数据,他在原始数据中的拖拽前oldIndex很好拿到。只需要保证拖拽后的新的newIndex是正确的,我觉得应该就没什么问题
image

@parlay96
Copy link
Member

扯远了,但是我认为拖拽列交换顺序 我见过,行交换顺序 我是真没见过,,没见过这样的场景。 行那么多数据,还拖动 有啥意义!

@mmclofe
Copy link
Author

mmclofe commented Aug 31, 2022

扯远了,但是我认为拖拽列交换顺序 我见过,行交换顺序 我是真没见过,,没见过这样的场景。 行那么多数据,还拖动 有啥意义!

我们有拖拽行对表格数据进行排序的场景

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants