2009-11-18 3 views
1

J'utilise la propriété iconField de l'arborescence Flex pour définir dynamiquement l'icône qu'un nœud doit utiliser. Cela fonctionne bien pour les noeuds feuilles, mais pour les noeuds de branche, il ne semble pas respecter mon iconField et affiche simplement le noeud de dossier par défaut.Pourquoi iconField est-il ignoré pour les nœuds de branche avec le composant Flex Tree?

est ici simple repro:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 

<mx:Script> 
    <![CDATA[ 
     [Embed("assets/icon1.png")] 
     public var icon1:Class; 

     [Embed("assets/icon2.png")] 
     public var icon2:Class; 
    ]]> 
</mx:Script> 

<mx:XML id="dp"> 
    <node label="Sales" icon="icon1"> 
     <node label="East" icon="icon2"/> 
     <node label="West" icon="icon2"/> 
    </node> 
</mx:XML> 

<mx:Tree dataProvider="{dp}" labelField="@label" iconField="@icon" 
    width="100%" height="100%" /> 

</mx:Application> 

Ce qui se passe est que icon2 montre pour les nœuds Est et Ouest, mais icon1 ne montre pas pour le nœud de vente. Comment puis-je faire en sorte que cela fonctionne?

Répondre

0

Presque! Vous devez définir le folderOpenIcon et folderClosedIcon comme ceci:

<mx:Tree dataProvider="{dp}" labelField="@label" iconField="@icon" 
     folderOpenIcon="{icon3}" 
     folderClosedIcon="{icon4}" 
     width="100%" height="100%" /> 
+0

Oui, mais ce que je suis en train de faire est d'avoir des icônes de dossier pour les différents noeuds dans l'arborescence. Dans mon cas, ils ne sont pas vraiment des dossiers du tout. Au lieu de cela, ils représentent différents objets avec des relations parent-enfant. – Marplesoft

1

I voir. susichan avait raison avec iconFunction:

<mx:Script> 
    <![CDATA[ 
     [Embed("icon1.png")] 
     public var icon1:Class; 

     [Embed("icon2.png")] 
     public var icon2:Class; 

     [Embed("icon3.png")] 
     public var icon3:Class; 

     private function setIcons(item:Object):Class { 
      var iconClass:Class; 
      var classType:String = XML(item).attribute("icon"); 
      if(classType!="") 
       return this[classType]; 
      else 
       return null; 
     } 


    ]]> 
</mx:Script> 

<mx:XML id="dp"> 
    <root> 
      <node label="Sales" icon="icon1"> 
       <node label="East" icon="icon3"/> 
       <node label="West" icon="icon3"/> 
      </node> 
      <node label="Non-Sales" icon="icon2"> 
       <node label="East" icon="icon3"/> 
       <node label="West" icon="icon3"/> 
      </node> 
    </root> 
</mx:XML> 

<mx:Tree dataProvider="{dp.node}" labelField="@label" iconField="@icon" 
     iconFunction="setIcons" showRoot="true" 
     width="100%" height="100%" /> 

Questions connexes