2009-12-09 4 views
0

juste confronté à une difficulté avec le contrôle de l'arbre glisser déposer ..
Supposons que j'ai arbre avec drag-drop activé. Je veux savoir quel nœud (id) est déposé à l'intérieur de quel nœud.Contrôle de l'arbre Flex glisser déposer position .item

1] si je fais glisser le noeud "Cat1" à l'intérieur de "Cat3", je veux identifier ids de frères et sœurs de "cat1", et "cat3".

2] en général je veux savoir les ids de l'élément courant étant déplacé avec
son nouveau parent et la nouvelle position et enregistrer ces positions.

3] Aussi "cat4" lorsqu'il est déplacé en dehors de "cat3", je veux connaître sa position et son id de frères et soeurs.

<mx:XML id="treeDP"> 
     <node label="Categories"> 
      <node label="Cat1" id="1" isBranch="true"/>    
      <node label="Cat2" id="2" isBranch="true"/> 

      <node label="Cat3" id="3" isBranch="true"> 
      <node label="Cat4" id="4" isBranch="true"/> 
     </node>   
     </node> 
</mx:XML> 

    <mx:Tree id="compBalanced" 
     width="420" height="439" 
     dataProvider="{treeDP}" 
     showRoot="false" 
     labelField="@label" 
     doubleClickEnabled="true" 
     dragEnabled="true" 
     dropEnabled="true" 
     dragDrop="onDragDrop(event)"    
      /> 
+0

j'ai essayé de chercher des positions dans drapDrop() mais je ne suis pas en mesure de te obtenir la position correcte comme tree.calculateDropIndex renvoie différentes positions sur différents niveaux d'imbrication. – Amitd

Répondre

3

J'ai rencontrer un problème comme celui-ci, quand je devais vérifier le nœud Wich recevoir les enfants. Pour le parent du nœud, j'avais utilisé ceci:

public function getObjectTarget() : Object { 
    var dropData : Object = tree.mx_internal::_dropData as Object; 
    if (dropData.parent != null) { 
     return dropData.parent; 
    } else { 
      // if there is not parent (root of the tree), I take the root directly 
     var renderer : IListItemRenderer = tree.indexToItemRenderer(0); 
     return renderer.data; 
    } 

espère que cela aidera quelqu'un

0

résolu temporairement le problème en écoutant dragComplete sur l'arbre
dragComplete = "handleDragComplete (event)

Lorsque la traînée est terminée, je reçois le dataprovider changé de l'arbre puis i récursive recherche le "élément déplacé" ("id" + "étiquette") dans le fournisseur de données modifié pour trouver sa position dans l'arbre, c'est-à-dire "id" du nœud dans lequel le nœud sélectionné est abandonné (nœud parent) et déclenche la sauvegarde à base de données API

yone a de meilleures options. pls répondre

merci :)

+0

voir ce lien http://www.adobe.com/devnet/flex/quickstart/working_with_tree/ – Amitd

Questions connexes