用户应该能够以类似excel的方式更改行顺序。现在行是按id
排序的。所以我再加一列order
1) Row A
2) Row B
3) Row C
4) Row D
现在Row A
应该在Row B
之后。
2) Row B
X) Row A
3) Row C
4) Row D
我需要计算新的订单。因此,我需要更新所有行!我不喜欢那样。
<<p> 想法/strong>我可以使用10
而不是1
的十进制间隔。
10.00) Row A
20.00) Row B
30.00) Row C
40.00) Row D
然后我可以像这样计算新的顺序:neworder = before + (after - before) / 2
Row B
后Row A
20.00) Row B
25.00) Row A
30.00) Row C
40.00) Row D
…Row B
后Row C
20.00) Row B
22.50) Row C
25.00) Row A
40.00) Row D
…Row C
后Row D
20.00) Row B
22.50) Row C
23.75) Row D
25.00) Row A
有更好的方法来处理这种问题吗?
编辑 @Adam建议单链线性列表。它会起作用的。但是排序和性能呢?
如果您将'order'列更改为'上一列'记录,则每次重新排序只需要两行编辑。使用您的最后一个示例:(我给第一行'NULL'的令牌值。)
B行之后的A行
NULL) Row B
B) Row A
A) Row C
C) Row D
…和B行之后的C行(将A行改为C行,C行改为B行)
NULL) Row B
B) Row C
C) Row A
A) Row D
…(将D行改为C行,将A行改为D行)
NULL) Row B
B) Row C
C) Row D
D) Row A