J'ai une application Flex qui affiche une collection d'éléments dans l'une des List
s selon la classification de l'article. En faisant glisser des éléments entre les listes, l'utilisateur lance un processus côté serveur qui tente de reclasser les éléments. Le processus côté serveur renvoie ensuite du code XML qui contient un message d'erreur ou un 'OK'.Implémentation du glissement manuellement sur une liste flexible
L'interface utilisateur doit effectuer un 'glisser-déplacer' si le serveur renvoie OK et non-op si le serveur renvoie une erreur. L'utilisation des gestionnaires de glissement par défaut (réglage dragEnabled=true
et dropEnabled=true
sur le List
s) semble toujours effectuer une copie de glissement. Pour autant que je sache, la seule façon pour moi d'avoir assez de contrôle sur les choses pour gérer la validation du serveur asynchrone est de mettre en œuvre manuellement le glisser vers et depuis les listes. J'ai donc lu Adobe's documentation et j'ai essayé d'adapter leur exemple. Le problème que j'ai, c'est que, pour autant que je sache, j'ai besoin de détecter le glissement en connectant l'événement mouseMove
dans la liste. Je passe ensuite la liste en tant qu'initiateur à la routine DragManager.doDrag.
Travailler de cette manière présente un certain nombre de problèmes: l'image proxy par défaut est la taille de la liste entière, la tentative d'utiliser la barre de défilement déclenche une détection de traînée, etc. Clairement je fais quelque chose de mal.
Est-ce que quelqu'un a essayé de faire glisser manuellement sur List
s manuellement? Y a-t-il une astuce rapide pour détecter correctement les événements de traînée? Devrais-je être en train de traquer l'itemRenderer réel que l'utilisateur est en train de faire glisser et passer en tant qu'initiateur?
Je viens de découvrir que cela fonctionne. C'est à peu près le seul moyen d'imiter le comportement par défaut de la liste. –