Dans le tableau, je veux pouvoir "déplacer" des rangées. J'ai une colonne appelée Mais je suis un peu confus sur quelle requête j'utiliserais pour les actions 'Up / Down' pour chaque ligne sur ma page ASP.NET. Quelle requête utiliserais-je pour sélectionner les lignes immédiatement "ci-dessous" ou "ci-dessus" la ligne à déplacer? P> sortid code>, qui sur l'insertion automatique est une valeur supérieure supérieure à la valeur la plus élevée (facilement trouvée en sélectionnant la valeur supérieure lors du tri de mon sortid desc). P>
3 Réponses :
Une option consiste à incrémenter tous les champs code> sortides code> des lignes "ci-dessous" juste avant Vous devez probablement envelopper cela dans un transaction Pour s'assurer que l'opération est effectuée atomique . p> comme pour les actions haut / bas, vous ne voudriez pas faire un insérer code> ing dans la nouvelle ligne. Vous pouvez le faire avec une commande update code> immédiatement suivie d'une commande code> insert code>. Disons que vous insérez une ligne à la position 10. Ensuite, vous pouvez faire quelque chose comme ceci: insérer code>. Ce qui précède n'est approprié que pour ajouter nouvelles lignes em> à un "emplacement" particulier. Pour l'action UP / DOWN, vous pouvez simplement "échanger" la valeur de tri code> code> des deux lignes, comme @ Guffa a suggéré dans l'autre réponse . p> p>
Pour obtenir les lignes au-dessus de la ligne cible.
select * from [TableName]
where sortid > (select sortid from [TableName]
where id = @id)
Déplacement d'un enregistrement vers le haut ou le bas est effectué en l'échangeant avec l'enregistrement avant ou après, respectivement, respectivement.
Si les valeurs code> (code> sont toujours continues (c.-à-d. Vous ne suppriment pas les enregistrements qui seraient Cause un écart), alors vous pouvez simplement ajouter ou soustraire un pour obtenir l'enregistrement suivant ou précédent. Si les enregistrements ne sont pas garantis pour être continu, vous devez trouver l'enregistrement à côté de celui que vous souhaitez déplacer. P>
pour trouver le tri code> de l'enregistrement avant: p> pour rechercher le suivi code> de l'enregistrement après: p> pour échanger les deux Enregistrements, vous pouvez utiliser cette astuce qui calcule une valeur de l'autre: p>
Astuce tifty dans une mise à jour élégante.