Czekam na tę kontrolę, i wydaje się, że brakuje standardowych właściwości ". Datasource" i "datamember" dla wiązania danych. Czy ta kontrola nie jest wiążąca? Mogę napisać jakąś niestandardową funkcję, która zapełnia widok drzewa z danego źródła danych, jak sądzę, i osadzić obiekty danych w razie potrzeby, ale czy jest to "najlepsza praktyka"? Czy wszyscy po prostu używają kontroli dostępu do drzewa innej firmy?W jaki sposób łączysz dane z formantem System.Windows.Forms.Treeview?
Odpowiedz
Masz rację, ponieważ nie ma powiązania danych. Powodem jest to, że TreeViews są hierarchicznymi strukturami danych. To nie jest prosta lista. W rezultacie opcja databind jest nieprawidłowa, aby wypowiadać strukturę list.
Niestety to tworzenia własnych metod kontroli zapełnić lub zakup 3rd party (które w końcu będą mieli swoje własne metody zapełniania.)
Oto przyzwoity artykuł MSDN na Binding Hierarchical Data.
Jeśli jest to tylko kilka poziomów, chciałbym wypełnić zestaw danych kilkoma tabelami i ustawić DataRelation w kolumnach. Następnie użyjesz zagnieżdżonych pętli i utworzysz węzły drzewa.
Używam sterowania drzewem z Developer's Express. Wykona on tabelę danych i wyświetli/edytuje ją w sposób hierarchiczny. Wszystko, czego potrzebuje, to pole klucza podstawowego i pole identyfikatora nadrzędnego w tabeli i może dowiedzieć się, co się dzieje.
Możesz zrobić to samo, jeśli rzucisz własny kod i użyjesz własnej klasy.
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);
}
}