Как вы привязываете данные к элементу управления System.Windows.Forms.Treeview?

Я смотрю на этот элемент управления, и, похоже, ему не хватает стандартных свойств .net «источник данных» и «член данных» для привязки данных. Этот элемент управления нельзя привязать? Я могу написать некоторую пользовательскую функцию, которая заполняет древовидную структуру из заданного источника данных, я полагаю, и при необходимости встраиваю объекты данных, но является ли это «наилучшей практикой»? Или все просто используют сторонний древовидный элемент управления?


person GWLlosa    schedule 16.12.2008    source источник


Ответы (3)


Вы правы в том, что нет привязки данных. Причина в том, что TreeViews являются иерархическими структурами данных. То есть не прямой список. В результате опция привязки данных недопустима для структуры списка.

К сожалению, это создание собственных методов заполнения или покупка сторонних элементов управления (у которых в конце концов будут свои собственные методы заполнения).

Вот достойная статья MSDN о связывании иерархических данных.

person Gavin Miller    schedule 16.12.2008

Я использую элемент управления деревом от 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);
    }
}
person TheCodeMonk    schedule 17.12.2008

Если это всего пара уровней, мне нравится заполнять набор данных парой таблиц и настраивать DataRelation для столбцов. Затем вы используете несколько вложенных циклов и создаете свои узлы дерева.

person dotjoe    schedule 16.12.2008