J'ai une question Flex. Je me demandais, si j'ai deux zones de liste, et je veux glisser et déposer entre les deux, comment puis-je empêcher l'utilisateur de glisser sur la même liste (dupliquant ainsi l'élément? Je ne peux pas avoir une situation où c'est le . cas Merci les garsFlex :: Comment éviter le glisser-déposer, en le faisant glisser sur soi-même
Répondre
ai pas testé mais je suppose que quelque chose comme cela devrait fonctionner:
écouter événement dragStart
sur les deux listes et définir une variable source
selon event.target
maintenant, écoutez l'événement dragDrop
sur les deux. listes et appelez event.preventDefault()
si le source
est le même que le target
J'ai trouvé la solution, dont je ne suis pas sûr travaillerait pour quelqu'un d'autre. J'ai eu essentiellement dans mes deux listes: `
<mx:List id="srcList" dataProvider="{_source}"
allowMultipleSelection="true"
enabled="{enabled}"
labelField="{labelField}"
iconFunction="iconFunction"
dragEnabled="true"
dropEnabled="true"
dragDrop="doDragDrop(event);"
width="100%"
height="100%"
/>
</mx:VBox>
<mx:VBox paddingTop="50">
<mx:Button label="->" enabled="{enabled}" click="add()"/>
<mx:Button label="<-" enabled="{enabled}" click="rem()"/>
</mx:VBox>
<mx:VBox width="100%" height="100%">
<mx:Label text="{right_col_heading}" />
<mx:List id="dstList" dataProvider="{_destination}"
allowMultipleSelection="true"
enabled="{enabled}"
dragEnabled="true"
dropEnabled="true"
dragDrop="doDragDrop(event);"
width="100%"
height="100%"
labelField="{labelField}"
iconFunction="iconFunction"
verticalAlign="center"
/>`
I essentiellement ajouté un dragMoveEnabled = « true » pour les deux listes et maintenant en principe pas ajouter de nouveau à la même liste un élément lui-même, mais il suffit de déplacer l'ordre (ce qui n'a pas d'importance pour moi car c'est un envoi de savon et le back-logic le mettrait dans le bon ordre de toute façon).
Voici quelques fonctions simples que j'ai faites en construisant une application de travail que j'avais l'habitude d'enrouler ma tête autour de glisser glisser et laisser tomber. Je cherchais un moyen d'avoir plusieurs listes avec la fonctionnalité de glisser-déposer qui ne seraient pas interférer les uns avec les autres. En outre, je ne voulais pas faire de copie de données de liste autour.
private function onlyAllowMoveDragOverHandler(event:DragEvent):void {
event.preventDefault();
event.currentTarget.showDropFeedback(event);
DragManager.showFeedback(DragManager.MOVE);
}
private function allowDropOnlyIfInitiatorEqualsComponent(event:DragEvent, component:IUIComponent):void {
event.preventDefault();
if (event.dragInitiator == component) {
DragManager.acceptDragDrop(event.target as IUIComponent);
}
else {
DragManager.showFeedback(DragManager.NONE);
}
}
Et je utilisé dans mon MXML:
<mx:List
x="10"
y="170"
id="availableLangsList"
dataProvider="{availableLangs}"
width="100"
height="200"
dragEnabled="true"
dragMoveEnabled="true"
dropEnabled="true"
dragOver="onlyAllowMoveDragOverHandler(event);"
dragEnter="allowDropOnlyIfInitiatorEqualsComponent(event, selectedLangsList);"
dragComplete="selectedLangs.refresh();"
/>
<mx:Label x="129" y="153" text="list 4"/>
<mx:List
x="129"
y="170"
id="selectedLangsList"
dataProvider="{selectedLangs}"
width="100"
height="200"
dragEnabled="true"
dragMoveEnabled="true"
dropEnabled="true"
dragOver="onlyAllowMoveDragOverHandler(event);"
dragEnter="allowDropOnlyIfInitiatorEqualsComponent(event, availableLangsList);"
dragComplete="availableLangs.refresh();"
/>
Dans mon cas, j'ai utilisé un HashCollection (qui étend ArrayCollection) [google juste, vous trouverez le composant]. Le fournisseur de données est lié à cette collection. Vous ajouteriez des éléments à la collection avec: dataprovider.put (clé, objet) au lieu de dataprovider.addItem (objet).
Le "hash" assurera l'unicité dans la collection. SO, même si l'utilisateur fait glisser-déposer quelque chose qui existe déjà dans le hachage, la valeur d'origine serait remplacée par le nouvel objet (mais cela n'aurait aucune importance car c'est la même valeur). La "clé", cependant, doit être unique .... sinon, l'idée de hachage ne fonctionnera pas.
Merci Brice, Ces fonctions ont été utiles. Pour qu'ils fonctionnent dans les listes d'étincelles, mettez simplement à jour la première fonction avec createDropIndicator au lieu de showDropFeedback et arrêtez de transmettre l'événement.
private function onlyAllowMoveDragOverHandlerS(event:DragEvent):void {
event.preventDefault();
event.currentTarget.createDropIndicator();
DragManager.showFeedback(DragManager.MOVE);
}
- 1. Connexion de lignes (en faisant glisser) dans Flex/Actionscript
- 2. faisant glisser pendant l'exécution
- 3. Flex faisant défiler le canevas vers le haut
- 4. Flex Glisser et redimensionner
- 5. Flex 3 Le glisser-déposer en arbre est lent
- 6. Créer un div en cliquant et en faisant glisser
- 7. jQuery faisant glisser des divs texte sélectionné
- 8. Comment implémenter glisser et déposer dans le contrôle Flex Grid?
- 9. AutoScroll parent iframe en faisant glisser (Prototype & Scriptaculous)
- 10. WPF Listbox défilement automatique tout en faisant glisser
- 11. Trouble with Pan en faisant glisser dans Silverlight
- 12. Comment éviter l'effet vacillant javascript glisser-déposer
- 13. Faites glisser et déposez sur Flex AdvancedDataGrid
- 14. L'exception est avalée en faisant glisser et déposer
- 15. Image personnalisée tout en faisant glisser un objet dérivé CWnd
- 16. Asp.net Mvc OutputCache attribut et en faisant glisser l'expiration
- 17. Flex 3.0 Glisser-Déposer
- 18. flex: problème de glisser-déposer
- 19. Comment gérer le glisser-déposer dans le concepteur?
- 20. des informations sur le glisser & déposer!
- 21. Nokogiri: Comment sélectionner des noeuds en faisant correspondre le texte?
- 22. Comment échanger des positions UIButton en les balayant et/ou en les faisant glisser?
- 23. Comment obtenir ListViewItem sous MouseCursor tout en faisant glisser sth. dessus
- 24. opérations glisser-déposer Manuel dans Flex
- 25. iPhone: comment créer une image dynamique en faisant glisser l'icône de l'iphone réarrangement
- 26. Comment réorganiser la section dans UITableView en faisant glisser similaire à la ligne?
- 27. Comment puis-je supprimer une colonne d'un JTable en faisant glisser?
- 28. Obtenez le type en flex
- 29. Comment désactiver le glisser-déposer pour NSTextField?
- 30. jquery sortable - comment éviter le glissement d'une liste d'une liste à l'autre