Как вы привязываете данные к элементу управления System.Windows.Forms.Treeview? - PullRequest
13 голосов
/ 17 декабря 2008

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

Ответы [ 3 ]

8 голосов
/ 17 декабря 2008

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

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

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

5 голосов
/ 17 декабря 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);
    }
}
2 голосов
/ 17 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...