Я смотрю на этот элемент управления, и, похоже, ему не хватает стандартных свойств .net «источник данных» и «член данных» для привязки данных. Этот элемент управления нельзя привязать? Я могу написать некоторую пользовательскую функцию, которая заполняет древовидную структуру из заданного источника данных, я полагаю, и при необходимости встраиваю объекты данных, но является ли это «наилучшей практикой»? Или все просто используют сторонний древовидный элемент управления?
Как вы привязываете данные к элементу управления System.Windows.Forms.Treeview?
Ответы (3)
Вы правы в том, что нет привязки данных. Причина в том, что TreeViews являются иерархическими структурами данных. То есть не прямой список. В результате опция привязки данных недопустима для структуры списка.
К сожалению, это создание собственных методов заполнения или покупка сторонних элементов управления (у которых в конце концов будут свои собственные методы заполнения).
Вот достойная статья MSDN о связывании иерархических данных.
Я использую элемент управления деревом от Developer's Express. Он возьмет таблицу данных и отобразит/отредактирует ее в иерархическом порядке.
Все, что ему нужно, это поле первичного ключа и поле родительского идентификатора в таблице, и он сможет выяснить, что куда идет.
Вы можете сделать то же самое, если вы создадите свой собственный код и используете свой собственный класс.
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);
}
}
Если это всего пара уровней, мне нравится заполнять набор данных парой таблиц и настраивать DataRelation для столбцов. Затем вы используете несколько вложенных циклов и создаете свои узлы дерева.