Страницы

Поиск по вопросам

вторник, 13 ноября 2018 г.

Разобрать список на C#

В бд имеется таблица, которая хранит дерево данных, и имеет примерно следующий вид: id, tree, name
Т.е. id записи, tree указывает на принадлежность к тому или иному узлу, и собственно name - т.е. имя узла
Так вот, tree имеет записи вида:
1. 1.1. 1.1.1 1.1.2 1.2. 1.2 1.2.1
Хотелось бы все это распарсить и отобразить в TreeView, но пока не знаю каким образом даже подойти к этой задаче( Подозреваю что есть какое-то простое решение, и нет необходимости изобретать велосипед


Ответ

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) { List

list = 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; } } }
Собственно, если у Вас есть уже структура данных, то можете просто использовать метод для построения дерева.
Мой пример выводит так:

Комментариев нет:

Отправить комментарий