Ich habe eine Liste in einer Datenbank, die der Benutzer bestellen können sollte.Aktualisieren Sie eine Liste von Dingen, ohne jeden Eintrag zu treffen
itemname| order value (int)
--------+---------------------
salad | 1
mango | 2
orange | 3
apples | 4
Auf Last aus der Datenbank, ich order by order_value
einfach.
per Drag ‚n Drop, sollte er in der Lage sein apples
so zu bewegen, dass sie an der Spitze der Liste angezeigt wird ..
itemname| order value (int)
--------+---------------------
apples | 4
salad | 1
mango | 2
orange | 3
Ok. Also jetzt intern muss ich JEDEN LISTE-ARTIKEL aktualisieren! Wenn die Liste 20 oder 100 Elemente enthält, sind das viele Aktualisierungen für einen einfachen Ziehvorgang.
itemname| order value (int)
--------+---------------------
apples | 1
salad | 2
mango | 3
orange | 4
Ich würde es lieber mit nur einem Update tun. Eine Möglichkeit, an die ich dachte, ist, ob "interne Bestellung" ein double
Wert ist.
itemname| order value (double)
--------+---------------------
salad | 1.0
mango | 2.0
orange | 3.0
apples | 4.0
SO nach dem Drag n‘Drop-Operation, ich zuweisen apples
hat einen Wert, der kleiner ist als der Artikel ist es vor erscheinen soll:
itemname| order value (double)
--------+---------------------
apples | 0.5
salad | 1.0
mango | 2.0
orange | 3.0
.. und wenn ein Element irgendwo in die Mitte gezogen, seine order_value
ist größer als das man es nach erscheint .. hier zog ich orange
zwischen salad
und mango
zu sein:
itemname| order value (double)
--------+---------------------
apples | 0.5
salad | 1.0
orange | 1.5
mango | 2.0
Irgendwelche Gedanken zu besseren Möglichkeiten, dies zu tun?
Wenn dies vom Menschen generierte Daten sind, dann sind es wahrscheinlich Dutzende von Elementen. Die meisten Menschen würden das Interesse verlieren, indem sie manuell mehr als ein paar Dutzend sortieren würden (und die UI dafür wird über 20 hinausgehen, es sei denn, Sie haben einen echten großen Bildschirm). Mach es einfach. Es wäre eine andere Geschichte, wenn Sie Tausende oder Millionen von Gegenständen zurückgeben würden. – Seth
Müssen Sie gleichzeitige Aktualisierungen zulassen? –