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