我在数据库中有一个用户应该能够订购的列表。
itemname| order value (int)
--------+---------------------
salad | 1
mango | 2
orange | 3
apples | 4
从数据库加载时,我简单地order by order_value
.
通过拖放,他应该能够移动apples
以便它出现在列表的顶部..
itemname| order value (int)
--------+---------------------
apples | 4
salad | 1
mango | 2
orange | 3
好的。所以现在我必须在内部更新每个列表项!如果列表有 20 或 100 个项目,那么对于简单的拖动操作来说,这就是大量更新。
itemname| order value (int)
--------+---------------------
apples | 1
salad | 2
mango | 3
orange | 4
我宁愿只用一次更新来做到这一点。我想到的一种方法是,如果“内部订单”是double
value.
itemname| order value (double)
--------+---------------------
salad | 1.0
mango | 2.0
orange | 3.0
apples | 4.0
所以在拖放操作之后,我分配apples
其值小于其出现在前面的项目:
itemname| order value (double)
--------+---------------------
apples | 0.5
salad | 1.0
mango | 2.0
orange | 3.0
..如果一个项目被拖到中间的某个地方,它的order_value
比它之后出现的那个大..我搬到了这里orange
介于salad
and mango
:
itemname| order value (double)
--------+---------------------
apples | 0.5
salad | 1.0
orange | 1.5
mango | 2.0
关于更好的方法来做到这一点有什么想法吗?