Sie können die Eigenschaft labelField
der Struktur verwenden, um festzulegen, welche Eigenschaft für jeden Knoten die Bezeichnung sein soll.
In Ihrem Beispiel würde dies gibt Ihnen ein einstufig Tree
:
<mx:Tree id="tree" dataProvider="{ac}" labelField="item" />
Diese Links sollen Ihnen helfen:
Bearbeiten: die ArrayCollection
Sie erstellt enthält Objekte, von denen jede Gruppen mit Elementen übereinstimmen. Wenn Sie eine Tree
verwenden möchten, müssen Sie hierarchisch denken, von oben nach unten.
Die obersten Objekte sind Ihre "Gruppen", die aus Objekten bestehen, die die "Objekte" darstellen. In Ihrem ArrayCollection
muss jeder Index ein Object
sein, der wiederum verschachtelte untergeordnete Elemente enthält. Bitte beachten Sie: Jedes Objekt muss ihre verschachtelten Kinder in einer Eigenschaft namens "Kinder" angegeben haben.
Zum Beispiel:
{name: "Animals", children: new ArrayCollection([ {name: "Dog"}, {name: "Cat"} ])}
Dieses `Objekt so hierarchisch strukturiert:
Objekt: Tiere
|
| - Kinder
|
Hund
|
Cat
Von hier aus werden die Dog
und Cat
Objekte auch children
Eigenschaft haben könnte, zeigt eine andere noch ArrayCollection
. Macht das Sinn?
Beachten Sie, wie jedes Objekt den gleichen Bezeichner enthält. In diesem Fall habe ich "name" für das Etikett verwendet, das im Tree
angezeigt wird. Sie können auch die labelFunction
-Eigenschaft verwenden, um eine Funktion zu definieren, die eine String
zurückgibt und damit ermitteln kann, wie die Beschriftung für einen bestimmten Knoten zur Laufzeit ist.
Ich nahm Ihre ArrayCollection
und bündelte es in eine einfache Anwendung, die es als Tree
anzeigt.
<?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" />
Ich versuchte das, aber das listet nur die Elemente auf. Ich habe versucht, labelField = "group" zu setzen, aber das hat nur die Gruppen aufgelistet (habe sie nicht zu anklickbaren Knoten mit den Elementen als Kinder gemacht). Ich werde die von Ihnen geposteten Links überprüfen. – jtorrance
Eine Sache zu beachten, Sie haben keine verschachtelte Objektstruktur (d. H. Objekte eingebettet in Objekte). Als Ergebnis wird Ihr "Baum" flach aussehen, da er nur eine Ebene hat. Die Beispiele, die ich gepostet habe, zeigen, wie man Objekte mit Objekten verschachtelt, um die hierarchische Ansicht zu erhalten. – bedwyr
Zeigen sie wirklich, wie man aus flachen/gruppierten Daten eine hierarchische Struktur generiert? Der erste Link scheint (künstlich) "children" Knoten zu dem Array hinzuzufügen, während der zweite Link mit dem Aufbau einer hierarchisch strukturierten ArrayCollection beginnt. Fehle ich etwas? – jtorrance