17 Stimmen

Wie können Sie Daten an ein System.Windows.Forms.Treeview-Steuerelement binden?

Ich betrachte dieses Steuerelement, und es scheint die Standard-.net "datasource" und "datamember" Eigenschaften für die Datenbindung zu fehlen. Ist dieses Steuerelement nicht bindbar? Ich kann eine benutzerdefinierte Funktion schreiben, die die Baumansicht aus einer bestimmten Datenquelle auffüllt, nehme ich an, und Datenobjekte nach Bedarf einbetten, aber ist das die "beste Praxis"? Oder verwendet jeder einfach ein Treeview-Steuerelement eines Drittanbieters?

12voto

Gavin Miller Punkte 41976

Sie haben insofern Recht, als es keine Datenbindung gibt. Der Grund dafür ist, dass TreeViews hierarchische Datenstrukturen sind. Das heißt, es handelt sich nicht um eine einfache Liste. Infolgedessen ist die Datenbindungsoption ungültig, um eine Listenstruktur zu sagen.

Leider müssen Sie Ihre eigenen Populate-Methoden erstellen oder Steuerelemente von Drittanbietern kaufen (die am Ende ihre eigenen Populate-Methoden haben werden).

Hier ist ein anständiger MSDN-Artikel über Hierarchische Daten binden .

5voto

TheCodeMonk Punkte 1609

Ich verwende die Baumsteuerung aus Developer's Express. Es nimmt eine Datentabelle und zeigt/bearbeitet sie in einer hierarchischen Weise.
Es braucht nur ein Primärschlüsselfeld und ein übergeordnetes ID-Feld in der Tabelle, und es kann herausfinden, was wohin gehört.

Sie können dasselbe tun, wenn Sie Ihren eigenen Code erstellen und Ihre eigene Klasse verwenden.

class Node
{
    System.Collections.Generic.List<Node> _Children;
    String Description;

    void Node()
    {
      _Children = new System.Collections.Generic.List<Node>();
    }

    public System.Collections.Generic.List<Node> Children()
    {
      return (_Children);
    }
}

class Program
{
    static void Main(string[] args)
    {
      System.Collections.Generic.List<Node> myTree = new System.Collections.Generic.List<Node>();
      Node firstNode = new Node();
      Node childNode = new Node();
      firstNode.Children().Add(childNode);
    }
}

2voto

dotjoe Punkte 25012

Wenn es sich nur um ein paar Ebenen handelt, fülle ich gerne ein Dataset mit ein paar Tabellen und richte eine DataRelation für die Spalten ein. Dann verwenden Sie einige verschachtelte Schleifen und erstellen Ihre Baumknoten.

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