Zurück   Flashforum > Flex und AIR > Flex allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-10-2010, 21:48   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
Datenbankinhalte in Tree bzw. AdvancedDataGrid einfügen

Wie schaffe ich es, dass ein Baum bzw. eine Tabelle mit mehreren Ebenen aus einer Datenbank erstellt wird.

Ich habe beispielsweise in MySQL eine Datenbank in der jeweils in Feld 1 die Kategorie und in dem zweiten Feld der Punkt steht, bspw.;
Kategorie1 Punkt1
Kategorie1 Punkt2
Kategorie2 Punkt3
Kategorie3 Punkt4
Kategorie3 Punkt5
Kategorie3 Punkt6

Wie schaffe ich es nun diese Inhalte so darzustellen, dass die Ordner wie die jeweiligen Kategorien heißen und wenn ich sie aufklappe die einzelnen Punkte als Unterpunkte zu sehen sind?

Gibt es eine Möglichkeit, ohne alles vorher in (M)XML umzuwandeln?
Moorhuhn ist offline   Mit Zitat antworten
Alt 30-10-2010, 22:03   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Was ist eine Tabelle mit mehreren Ebenen? Wie greifst du auf die Datenbank zu?
Omega Psi ist offline   Mit Zitat antworten
Alt 30-10-2010, 22:49   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
Bei einem AdvancedDataGrid kann man ja ebenfalls die Daten in einem Baum anzeigen lassen, dass meine ich mit einer Tabelle mit mehreren Ebenen. Auf die Daten greife ich per PHP zu und nutze dafür den automatisierten Service des Flash Builders.
Moorhuhn ist offline   Mit Zitat antworten
Alt 31-10-2010, 07:48   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Da ich nicht weiss, was Flex generiert, kann ich dir nicht sagen was du machen musst.

Wenn du hierarchische Daten in einem mx:Tree darstellen möchtest, sollten sie folgende Struktur aufweisen:
Code:
package fs.examples
{
  public interface ITreeItem
  {
     function get label():String;
     function set label(value:String):void;
     function get children():IList;
     function set children(value:IList):void
  }
}
Das labelField kannst du programmatisch auf bestimmen, das Property, dass die Kindknoten festlegt nicht. Für solche Fälle kannst du aber einen eigenen ITreeDataDescriptor schreiben, was für dich aber noch etwas zu kompliziert sein sollte.

Ich denke das einfachste, was du machen kannst ist dir selbst ein einfache Datenmodel zu schreiben, das du mit den Daten aus den Services bestückst.
Omega Psi ist offline   Mit Zitat antworten
Alt 02-11-2010, 14:32   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
ich habe jetzt ein ganz einfaches Script, dass die Daten in das Datagrid einfügt
PHP-Code:
<mx:AdvancedDataGrid dataProvider="{data.lastResult.questions.question}">
    <
mx:columns>            
                <
mx:AdvancedDataGridColumn dataField="category"/>
        <
mx:AdvancedDataGridColumn dataField="item"/>
    </
mx:columns>
</
mx:AdvancedDataGrid
Die Daten sind per PHP herstelltes XML mit der Struktur
PHP-Code:
<questions>
<
question><category>$$$</category><item>$$$</item><question/>
<
question><category>$$$</category><item>$$$</item><question/>
</
questions
Allerdings bekomme ich es trotz verzweifelter Versuche nicht hin, es in einem Baum abzubilden, bei der die category als Ordner angezeigt werden und wenn man drauf klickt die untergeordneten items sieht. Kann mir da jemand weiterhelfen?
Moorhuhn ist offline   Mit Zitat antworten
Alt 02-11-2010, 18:42   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Für ein AdvancedDataGrid mußt du eine GroupingCollection verwenden.
Omega Psi ist offline   Mit Zitat antworten
Alt 02-11-2010, 19:34   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
Das ist mir schon klar, habe ich aber nicht hinbekommen, so habe ich es beispielsweise versucht, so geht es aber nicht:

Die Ausgabe bleibt einfach leer. Es liegt ganz offensichtlich an der Einbindung per http, denn wenn ich das exakt gleiche XML (wie die Ausgabe der PHP-Datei) in den MXML-File im Declarations-Block schreiben, dann funktionierts:

PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               minWidth="955" minHeight="600"
               creationComplete="data.send();">

    
    <fx:Declarations>
        <s:HTTPService id="data"
                       url="dataaccess.php"
                       contentType="application/xml"/>
        
        <fx:XML id="xmldata">
            <questions>
                <question>
                    <category>Testkategorie1</category>
                    <item>Testfrage1</item>
                </question>
                <question>
                    <category>Testkategorie2</category>
                    <item>Testfrage2</item>
                </question>
                <question>
                    <category>Testkategorie3</category>
                    
                    <item>Testfrage3</item>
                </question>
                <question>
                    <category>Testkategorie4</category>
                    <item>Testfrage4</item>
                </question>
                <question>
                    <category>Testkategorie5</category>
                    <item>Testfrage5</item>
                </question>
            </questions>
        </fx:XML>
        
    </fx:Declarations>
    
    <mx:AdvancedDataGrid creationComplete="gc.refresh()">
        <mx:dataProvider>
            <mx:GroupingCollection2 id="gc" source="{xmldata.question}" childrenField="undefined">
                    <mx:Grouping>
                        <mx:GroupingField name="category"/>
                    </mx:Grouping>
            </mx:GroupingCollection2>
        </mx:dataProvider>
        <mx:columns>
            <mx:AdvancedDataGridColumn dataField="item"/>
        </mx:columns>
    </mx:AdvancedDataGrid>

</s:Application>
wenn ich jedoch die source-Angabe verändere zu {data.lastResult.question.question} oder ähnlichem, dann bleibt die Ausgabe leer. Grundsätzlich funktioniert jedoch das Zusammenspiel mit PHP/XML, da die einfache Ausgabe <mx:AdvancedDataGrid dataProvider="{data.lastResult.questions.question} "/> funktioniert

Geändert von Moorhuhn (02-11-2010 um 20:14 Uhr)
Moorhuhn ist offline   Mit Zitat antworten
Alt 02-11-2010, 20:50   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Setze mal das resultFormat des Servers auf e4x.
Omega Psi ist offline   Mit Zitat antworten
Alt 02-11-2010, 21:28   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
meinst du so:
PHP-Code:
    <fx:Declarations>
        <
s:HTTPService id="data"
                       
url="dataaccess.php"
                       
resultFormat="e4x"/>
    
    </
fx:Declarations>
    
    <
mx:AdvancedDataGrid creationComplete="gc.refresh()">
        <
mx:dataProvider>
            <
mx:GroupingCollection2 id="gc" source="{data.lastResult.question}" childrenField="undefined">
                <
mx:Grouping>
                    <
mx:GroupingField name="category"/>
                </
mx:Grouping>
            </
mx:GroupingCollection2>
        </
mx:dataProvider>
        <
mx:columns>
            <
mx:AdvancedDataGridColumn dataField="item"/>
        </
mx:columns>
    </
mx:AdvancedDataGrid
Funktioniert leider nicht, die Tabelle scheint keine Daten zu bekommen
Moorhuhn ist offline   Mit Zitat antworten
Alt 03-11-2010, 21:37   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Und einen Proxy wie Charles oder FireBug nutzt du nicht?
Omega Psi ist offline   Mit Zitat antworten
Alt 03-11-2010, 22:30   #11 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
nein, kein Proxy. Wie gesagt, das einfach einfügen der Daten mit <mx:AdvancedDataGrid dataProvider="{data.lastResult.questions.question} "> funktioniert ja, bloß nicht, wenn ich versuche, dass zu bearbeiten. Und ich habe keinen blassen Schimmer woran es liegt
Moorhuhn ist offline   Mit Zitat antworten
Alt 05-11-2010, 16:36   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2010
Beiträge: 68
Vielen Dank für deine Hilfsversuche OmegaPsi.

Ich habe die Lösung gefunden, und die ist einfach trivial.

Für alle, dies interessiert: einfach creationComplete für den Datenaufruf ersetzen durch preinitialize und schon gehts
Moorhuhn ist offline   Mit Zitat antworten
Alt 05-11-2010, 17:53   #13 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Trivial ist was anderes... aber schön,dass es funktioniert.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Erweiterung der AdvancedDataGrid class Darian Flex programmieren 10 06-04-2010 14:24
AdvancedDataGrid Tree dropParent lukyluky Flex programmieren 0 12-01-2010 10:06
Angezeigte Tree Items auslesen bzw. auf Tree Item über Index zugreifen (Drag & Drop) Cookie Monster Flex programmieren 1 14-02-2009 08:53
Frage zu mx:AdvancedDataGrid raz0rx Flex programmieren 1 30-11-2008 15:46
AdvancedDataGrid Tree unterscheidliche Icons setzten?! jacquesr Flex programmieren 8 17-11-2008 15:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele