#c_sharp
В бд имеется таблица, которая хранит дерево данных, и имеет примерно следующий вид:
id, tree, name
Т.е. id записи, tree указывает на принадлежность к тому или иному узлу, и собственно
name - т.е. имя узла
Так вот, tree имеет записи вида:
1.
1.1.
1.1.1
1.1.2
1.2.
1.2
1.2.1
Хотелось бы все это распарсить и отобразить в TreeView, но пока не знаю каким образом
даже подойти к этой задаче( Подозреваю что есть какое-то простое решение, и нет необходимости
изобретать велосипед
Ответы
Ответ 1
using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Listlist = new List () { new Header() { Name = "1", List = new List () { new Header() { Name = "1.1", List = new List () { new Header() { Name = "1.1.1"}, new Header() { Name = "1.1.2"}, new Header() { Name = "1.1.3"}, } }, new Header() { Name = "1.2"}, new Header() { Name = "1.3"}, } }, new Header() { Name = "2", List = new List () { new Header() { Name = "2.1", List = new List () { new Header() { Name = "2.1.1"}, new Header() { Name = "2.1.2"}, new Header() { Name = "2.1.3"}, } }, new Header() { Name = "2.2"}, new Header() { Name = "2.3"}, }} }; treeView1.Nodes.Add("Headers"); BuildTreeView(list, treeView1.Nodes[0]); } private void BuildTreeView(List list, TreeNode parentNode) { if (list.Count != 0) { foreach (var item in list) { TreeNode tn = new TreeNode(item.Name); parentNode.Nodes.Add(tn); if (item.List != null) { BuildTreeView(item.List, tn); } } } } } sealed class Header { public string Name { get; set; } public List List { get; set; } } } Собственно, если у Вас есть уже структура данных, то можете просто использовать метод для построения дерева. Мой пример выводит так: Ответ 2
Складываешь всё в Dictionaryс id в качестве ключа и всей записью в качестве значения. Через foreach проходишь по нему и добавляешь детей родительскому элементу, а все записи с пустым родителем складываешь в список. В итоге получится лес.
Комментариев нет:
Отправить комментарий