Show / Hide Table of Contents

    TreeNode

    • Properties/Events


    Das Funktionsprinzip des Tree-Views ist ähnlich dem einer Combobox: Sie wählen einen Eintrag des Tree-Views aus und bekommen den Objektverweis an den DataSource des Tree-Views zurückgeliefert. Durch abfangen der entsprechenden Events können Sie mit dieser Information operieren.

    Um eine einfache Auflistung in Baumform zu erstellen, erzeugen Sie eine TextCollection mit den Einträgen und benutzen diese als NodeDataSource.

    An dieser Stelle soll nun exemplarisch auf den Aufbau eines Baumes eingegangen werden.

    Am Anfang machen Sie sich bitte Gedanken darüber, woher Sie Ihre Informationen für die Darstellung des Baumes nehmen möchten. Eine gute Möglichkeit besteht in der Schaffung einer Component, wie unter Tree-View beschrieben.

    Positionieren Sie ein TreeView-Control auf Ihrem Form. Generieren Sie über den Tree-View Column Dialog die gewünschten Spalten, die der Tree-View beinhalten soll. In diesem Beispiel benötigen Sie eine einzige Spalte. Wählen Sie anschließend aus dem Kontext-Menü des Tree-Views den Eintrag New Node. In dem Baum des Controls wird ein neuer Knoten erzeugt, mit dem Sie operieren können.

    Weisen Sie die erzeugte Component Ihrem TreeNode als NodeDataSource und die Properties als Eigenschaften des NodeDataSource zu. Jetzt dürfen Sie nicht vergessen, die Component auch mit Daten zu füllen. Schreiben Sie eine entsprechende Load-Bedingung in die OnLoad-Methode des Forms. Damit nicht alle Einträge aus der Datenbanktabelle in dem TreeView dargestellt werden, müssen Sie den Load noch auf die Bedingung einschränken, dass bei den gesuchten Datensätzen die ItemIDParent null oder 0 sein soll und nur Datensätze Ihres gewünschten Typs ausgewählt werden.

    Der nächste Schritt ist das Anzeigen von Unterknoten. Jeder Eintrag des Tree-Views ist ein Objekt. Entsprechend sollten alle Unterknoten Elemente einer Collection sein, die als Property in das Objekt eingebunden ist. Erzeugen Sie deshalb eine Collection als IndividualReadOnly-Property. Diese Collection laden Sie über die Get-Methode. Um das Beispiel aus Tree-View weiterzuführen, werden alle Elemente geladen, die als ItemIDParent die ItemID des Objekts haben. Um unnötige Loads auf die Datenbank zu unterbinden, sollten Sie wieder eine Membervariable anlegen, die unnötige Loads verhindert.

    Get-Methode der Collection:

    // Load nur durchführen, wenn noch nicht zuvor geschehen.
    if (this.oTreeviewItemCollMember == null)
    {
    // Laden aller Unterobjekte
    this.oTreeviewItemCollMember = new cdTreeviewItemColl(this.Global);
    // Setzen des Merkers
    this.oTreeviewItemCollMember.Load( "[lngItemIDParent] = " + lngItemID );
    }
    return this.oTreeviewItemCollMember;
    

    Nutzen Sie dieses Collection-Property als NodeDataSource des TreeNode zweiter Ebene. Sind die Display Member, Value Member und Icons richtig eingestellt, ist ihr Navigationsbaum fertig.

    Benötigen Sie eine tiefergehende Unterschachtelung, können Sie einfach einen TreeNode dritter Ebene hinzufügen und die gleichen Einstellungen wie bei dem Treenode zweiter Ebene vornehmen. Da jedes Objekt des Collection-Properties wiederum ein Collection Property besitzt, das über die Get-Methode alle untergeordneten Objekte liest, brauchen Sie keine weiteren Properties o.ä. schaffen.

    Um andere Elemente hinzuzufügen wird empfohlen, für jeden Typ einen eigenen Tree-Node anzulegen und eine Collection des jeweiligen Element-Typs als IndividualReadOnly-Property der Component hinzuzufügen. Durch Definition der Get-Methoden können Sie die Collections entsprechend füllen.

    Tree-Node Lazy-Loading

    Der TreeView ist in der Lage, ein Lazy-Loading von TreeNodes auszuführen. Beinhaltet ein TreeNode sehr viele SubNodes, werden standardmäßig die ersten 50 Einträge angezeigt und zusätzlich ein Node mit „…“. Durch Klick auf diesen Node können dann die restlichen Nodes nachgeladen werden.

    Back to top Generated by DocFX