TreeView aufgebohrt

Das TreeView-Steuerelement offenbart sich als eines der flexibelsten Steuerelemente, wenn es um die Anzeige hierarchischer Daten geht. Es kann aber noch mehr: Mit ein wenig Know-how bringen Sie einem Steuerelement sogar bei, wie es den Benutzern über Drag&Drop hinaus beim Verwalten der Daten helfen kann.

Die Grundlagen zum TreeView-Steuerelement sowie das Füllen mit Daten und die Bereitstellung von Drag&Drop-Funktionen haben wir bereits vorgestellt, etwa in den Ausgaben 12/2000, 1/2001, 4/2001 oder 3/2003.

Außer Drag&Drop bietet das TreeView-Steuerelement keine auf den ersten Blick erkennbaren Funktionen zum Verwalten von Daten. Wie bringt man einem Kontextmenü ein wenig mehr Interaktivität bei – etwa um von dort aus Datensätze zu löschen, hinzuzufügen oder zum Bearbeiten zu öffnen? Die Antwort ist im wahrsten Sinne des Wortes nicht offensichtlich: Rüsten Sie das TreeView-Steuerelement beziehungsweise dessen Einträge einfach mit Kontextmenüs aus, die weitere Funktionen verfügbar machen.

TreeView-Steuerelemente und Kontextmenüs

Im vorliegenden Beispiel soll das TreeView-Steuerelement die Artikelkategorien der Nordwind-Datenbank und die enthaltenen Artikel anzeigen. Die Einträge in Form von Kategorien und Artikeln sollen im Kontextmenü je nach Objekttyp verschiedene Einträge anzeigen. Das ist nicht gerade trivial, immerhin erfordert es zunächst eine Prüfung des aktuell markierten Objekts und in der Folge die Anzeige der benötigten Funktionen.

Es gibt drei unterschiedliche Kontextmenüs: Klickt der Benutzer auf einen Punkt im leeren Bereich des TreeView-Steuerelements, soll etwa ein Kontextmenü mit dem folgenden Eintrag erscheinen:

  • Anlegen einer neuen Kategorie Ein Klick auf eine der Kategorien soll direkt drei Menübefehle anzeigen:

  • Bearbeiten der Kategorie

  • Löschen der Kategorie

  • Anlegen eines neuen Artikels in dieser Kategorie Fehlt noch das Kontextmenü eines der Artikel. Es soll folgende Befehle anbieten:

  • Bearbeiten des Artikels

  • Löschen des Artikels

Es ist leicht zu erkennen, dass es nicht ausreicht, beim Rechtsklick im TreeView die Art des angeklickten Elements zu ermitteln: Fast alle Optionen erfordern die Kenntnis der individuellen ID des betreffenden Eintrags.