2009-05-07 5 views
0

J'ai une liste de données que les utilisateurs peuvent contrôler dans l'ordre de tri.Contrôle de l'ordre de tri d'une liste à partir d'une interface utilisateur d'administration

Il ressemble à ceci

Apples  /\ \/ 
Oranges /\ \/ 
pears  /\ \/ 
banana  /\ \/ 
Pineapples /\ \/ 
etc  /\ \/ 

le/\ et/sont censés être flèches haut et bas

Lorsque l'utilisateur clique, je veux récupérer l'ordre et de prendre de tri courant une distance FRO (donc il a une valeur plus petite et sera plus élevé dans l'ordre de tri.

Lorsque l'utilisateur clique vers le bas, je ne le

opposé Je suppose que je dois aussi pour établir s'il y a déjà autre chose dans la liste avec la nouvelle valeur que je veux assigner et ajuster l'ordre de tri de cet article dans la direction opposée

Est-ce que cela semble être un bon moyen d'y parvenir?

Ou y a-t-il un moyen plus intelligent?

N'importe qui a obtenu un échantillon de code. J'utilise .net 3.5 si LINQ est OK

La liste est stockée dans un dans le cache de mémoire - IList<mycustomobj>

des suggestions reçues avec reconnaissance

EDIT: Les questions que je suis inquiet au sujet sont quand il y a pas d'ordre de tri au départ - tout sera nul. Et mon algorithme suggéré a une hypothèse implicite que l'ordre de tri sera toujours continu. Mais que se passe-t-il lorsqu'une ligne est supprimée? Il y aura une lacune dans la liste des ordres de tri, il suffit donc d'ajouter 1 et d'en retirer 1 pour faire la différence - comment gérer ce scénario?

Répondre

1

C'est une façon de le faire. Dans mon application, nous utilisons soit glisser-déposer, ou avoir une flèche vers le haut et une flèche vers le bas pour déplacer l'élément sélectionné vers le haut/bas. Si vous avez une propriété qui détermine l'ordre de tri, lorsque l'utilisateur clique sur la flèche vers le haut, il suffit de permuter la position de tri de l'élément en cours avec la position de tri de l'élément précédent, sauf s'il s'agit du premier élément . Utilisez la logique inverse de la flèche vers le bas ...

Edit:

Si vos articles n'avez pas encore la position de tri, vous pouvez simplement passer par votre liste et attribuer une position de tri de 1 à n. Dans le cas d'une ligne supprimée, diminuez la position de tri de tous les éléments suivants de un.

+0

Exactement. Échanger les valeurs de tri des deux éléments échangés. –

Questions connexes