Vous pouvez utiliser la propriété labelField
de l'arborescence pour définir la propriété que vous voulez attribuer à chaque nœud.
Dans votre exemple, cela vous donnerait un seul niveau Tree
:
<mx:Tree id="tree" dataProvider="{ac}" labelField="item" />
Ces liens devraient vous aider:
Modifier: le ArrayCollection
que vous avez créé contient des objets, dont chacun correspond à des groupes avec des éléments. Si vous voulez utiliser un Tree
, vous devez penser hiérarchiquement, de haut en bas.
Les objets les plus importants seront vos "groupes", constitués d'objets représentant les "éléments". Dans votre ArrayCollection
, chaque index doit être un Object
qui, à son tour, contient des enfants imbriqués. S'il vous plaît noter: chaque objet doit avoir leurs enfants imbriqués spécifiés dans une propriété nommée "enfants".
Par exemple:
{name: "Animals", children: new ArrayCollection([ {name: "Dog"}, {name: "Cat"} ])}
Ce `objet est ainsi structuré hiérarchiquement:
objet: Animaux
|
| - enfants
|
Dog
|
Cat
A partir de là, les objets Dog
et Cat
pourrait également avoir une propriété children
, montrant encore une autre ArrayCollection
. Est-ce que ça a du sens?
Notez que chaque objet contient le même identificateur. Dans ce cas, j'ai utilisé "nom" pour l'étiquette qui sera affichée dans le Tree
. Vous pouvez également utiliser la propriété labelFunction
pour définir une fonction qui renvoie String
et peut ainsi déterminer l'étiquette d'un noeud donné au moment de l'exécution.
J'ai pris votre ArrayCollection
et l'ai regroupé dans une application simple qui l'affiche comme Tree
.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable] public var ac:ArrayCollection= new ArrayCollection([
{ name: "Animals", children: new ArrayCollection([ {name: "dog"}, {name: "cat"}])},
{ name: "Fruits", children: new ArrayCollection([ {name: "orange"}, {name: "apple"} ])}]);
]]>
</mx:Script>
<mx:Tree dataProvider="{ac}" labelField="name" />
J'ai essayé mais cela ne fait que lister les éléments. J'ai essayé de définir labelField = "group" mais cela n'a listé que les groupes (ne les a pas transformés en nœuds cliquables avec les éléments en tant qu'enfants). Je vais vérifier les liens que vous avez publiés. – jtorrance
Une chose à garder à l'esprit, c'est que vous n'avez pas de structure d'objet imbriquée (c'est-à-dire des objets incorporés w/dans des objets). En conséquence, votre "arbre" aura l'air plat car il n'a qu'un seul niveau. Les exemples que j'ai publiés montrent comment imbriquer des objets w/dans des objets pour obtenir la vue hiérarchique. – bedwyr
Est-ce qu'ils montrent vraiment comment générer une structure hiérarchique à partir de données à plat/groupées? Le premier lien semble ajouter (artificiellement) des nœuds "enfants" au tableau, tandis que le second commence par construire une ArrayCollection hiérarchiquement structurée. Est-ce que je manque quelque chose? – jtorrance