Drag&Drop / Sortable / Scriptaculous
Bonjour à tous,
Je galère sur un problème de Drag and Drop avec les Sortable avec la librairie Scriptaculous.
J'ai découvert des choses intéressantes. Notamment que sur l'évènement onUpdate (resp onChange), on peut connaitre l'id du conteneur source (resp l'id de l'item qu'on est en train de dropper.
***********************************
ex1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ...
onUpdate: SortableLists.updated,
...
var SortableLists = {
...
updated: function (list) {
alert(list.id); //affiche l'id de la liste d'ou vient l'item droppé
}
...
} |
************************************
ex2 :
Code:
1 2 3 4 5 6 7 8
| var SortableLists = {
...
onChange : SortableLists.test,
...
test: function (element) {
alert(element.id); //affiche l'id de l'item droppé
...
} |
Mais ça l'affiche un nombre impressionnant de fois. Normal puisque l'évènement onChange intervient à chaque fois qu'il y a modification dans l'ordre d'une liste, c'est à dire énornément de fois lorsqu'on bouge d'une liste de 12 élément à une autre de 20éléments..
************************************
Je vous explique rapidement ce que je dois faire:
1) Je peux bouger un élément "li" ou "ul" d'une liste à une autre.
2) Quand je drag&drop un élemen ("li" ou "ul"), je dois enregistrer plusieurs informations (comme l'id de l'élément droppé, l'id du conteneur source, l'id du conteneur destination)(en les insérant dans un array par exemple) et ensuite, je dois toujours conserver l'élément droppé dans le conteneur source (la liste "ul" de départ donc) mais avec une couleur de fond différente, ce qui montrera que l'élément a bien été bougé qqpart. Cela implique donc bien que je sache d'une manière ou d'une autre l'id de l'élément que je bouge car j'en ai besoin à plusieurs reprises.
3) Enfin, quand l'utilisateur clique sur un bouton submit, je dois appeler plusieurs actions struts corresponsdant à toutes les entrées que j'aurai dans mon array. C'est à dire qu'à chaque fois que l'utilisateur bougera un élément qqpart, il y a une opération sur des tables à effectuer derrière, donc c'est de cette manière que j'ai choisi de traduire les opérations à effectuer en base : en stockant les informations dans un array que je devrai parser à la fin.
Ca parait peutetre méchant comme ça mais ça l'est pas.
J'arrive à insérer une ligne dans un array sur l'évènement onUpdate mais par contre, j'arrive pas à mettre dans cette ligne les informations qui m'intéressent, à savoir les id que je vous ai cités plus haut.
Quelqu'un peut me filer un coup de main? :D
Mais tu ne "classe" plus tes elements...
Ta solution est bonne car tu obtiens directement des Draggable et des Droppable et donc toutes les propriétés interessantes...
Mais ce qui m'interesse moi, c'est de conserver les propriétés des Sortables : je veux que mes éléments se classent les uns entre les autres etc...
Comment fais tu cela 'simplement' avec seulement des Drag et des Drop'... ?! :? Ce n'est pas trop fastidieux ?
Merci de vos réponses :)