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?
Antworten
Zu viele Anzeigen?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 .
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);
}
}