2 Stimmen

Wie kann ich ein Flex Tree-Steuerelement am besten mit einem in einer Datenbank gespeicherten Baum verknüpfen?

Ich habe eine lokale SQLite-Datenbank, die einen Baum (als Nested Sets) enthält. In einer AIR-Anwendung möchte ich diesen Baum in einem Tree Control anzeigen und die Möglichkeit bieten, die Namen der Knoten zu ändern und Knoten zu kopieren, zu verschieben, hinzuzufügen oder zu löschen.

Jetzt habe ich ein wenig Schluckauf, wo ich welchen Code einfügen soll. Offensichtlich habe ich eine Klasse, die Operationen wie laden / aktualisieren / einfügen / löschen gegen die Datenbank durchführen wird. Dies würde den gesamten Baum in eine Speichervariable laden und die vom Benutzer vorgenommenen Änderungen zurück in die Datenbank speichern.

Sollte diese Klasse der dataProvider, der dataDescriptor oder eine Erweiterung des Tree Controls selbst sein? Und wenn der Benutzer eine Operation wie das Hinzufügen eines Knotens anfordert, sollte dann der dataProvider aktualisiert werden und der Datenbank-Handler auf ein Ereignis reagieren, oder sollte die Methode des Datenbank-Handlers aufgerufen und dann der dataProvider aktualisiert werden? Ich würde sagen, dass das letztere besser ist, weil es einfacher ist, die Daten des Baums nicht zu aktualisieren, wenn etwas mit der Datenbankabfrage schief geht.

Es gibt Methoden zum Hinzufügen und Entfernen von Knoten in der DefaultDataDescriptor und in der Tree-Klasse (geschützte Methoden in der letzteren), sollte ich verwenden / erweitern Sie diese oder ignorieren Sie?

Der Grund, warum ich darüber verwirrt bin, ist, dass nach den Dokumenten, ein Tree-Steuerelement das Objekt in seiner 'dataDescriptor' Eigenschaft gespeichert verwendet, um zu analysieren und zu manipulieren, die tatsächlichen Daten, die in seiner 'dataProvider' Eigenschaft gespeichert ist.

Dies scheint sinnvoll zu sein, bis man merkt, dass man es nicht unterklassifizieren kann, es ist nie das Tree-Steuerelement, das Daten manipuliert (mit Ausnahme von Drag&Drop, wenn das aktiviert ist), und es ist auch nicht der dataDescriptor . Vielmehr erfolgt in allen Beispielen die Bearbeitung von Daten direkt über das dataProvider-Objekt, das Ereignisbehandler im Tree-Steuerelement auslöst.

Was ist es, das ich hier nicht verstehe?

1voto

David Hanak Punkte 10304

Werfen Sie einen Blick auf mx.controls.treeClasses.HierarchicalCollectionView . Sie ist nicht Teil der öffentlichen API, aber ihr vollständiger Quelltext ist als Teil von Flex verfügbar. Der Tree-Controller verwendet diese Klasse intern, um verschiedene Datenquellen zu verarbeiten.

0 Stimmen

Warum zum Teufel ist diese Klasse nicht Teil der öffentlichen API? Ich bin sehr ähnlich verwirrt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X