Доброго времени суток. Изучаю C# с неделю , знаний мало , будьте добры , помогите. Мне нужно создать многоуровневое дерево с помощью компонента TreeView.Данные отображаются в DataGridView Искал много способов организации этого , нашел один довольно простой и понятный мне. Через заполнение словаря. Организовал узлы на 1 уровне , по так информация выглядит не понятно пользователю , так сказать "каша". Хочу организовать ещё узлы 2 уровня ,если я правильно их нумерую, которые бы назывались как колонки таблицы , а в них хранилось бы значения поля. Что-то вроде Root => Column Name => Field , где => это узлы. К сожалению в этом и состоит главная проблема. Не подскажите , как это сделать ? Или есть более простой метод заполнения TreeView , избегая словарь , следовательно и по другому организовать узлы ? Прилагаю изображения как должно быть и как на данный момент у меня и сам код моей программы.
Код | namespace Tree { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Size = new Size(1600, 500); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'releaseBDDataSet.Zakazchiki' table. You can move, or remove it, as needed. this.zakazchikiTableAdapter.Fill(this.releaseBDDataSet.Zakazchiki); } private void button1_Click(object sender, EventArgs e) { treeView1.Nodes.Clear(); Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>(); foreach (DataGridViewRow row in dataGridView1.Rows) { string FullName = (string)row.Cells[3].Value; string Name = (string)row.Cells[4].Value; string INNKPP = (string)row.Cells[5].Value; string OGRN = (string)row.Cells[6].Value; string UAdres = (string)row.Cells[7].Value; string MAdres = (string)row.Cells[8].Value; string Req = (string)row.Cells[9].Value; string Number = (string)row.Cells[10].Value; string OKVED = (string)row.Cells[11].Value; string OKPO = (string)row.Cells[12].Value; string OKFSOKOPF = (string)row.Cells[13].Value; string GDer = (string)row.Cells[14].Value; string GBug = (string)row.Cells[15].Value; string RNPF = (string)row.Cells[16].Value; string RNFCC = (string)row.Cells[17].Value; string RNRFOMC = (string)row.Cells[18].Value; string OKATO = (string)row.Cells[19].Value; if (FullName == null) continue; if (dict.ContainsKey(FullName)) { dict[FullName].Add(Name); dict[FullName].Add(INNKPP); dict[FullName].Add(OGRN); dict[FullName].Add(UAdres); dict[FullName].Add(MAdres); dict[FullName].Add(Req); dict[FullName].Add(Number); dict[FullName].Add(OKVED); dict[FullName].Add(OKPO); dict[FullName].Add(OKFSOKOPF); dict[FullName].Add(GDer); dict[FullName].Add(GBug); dict[FullName].Add(RNPF); dict[FullName].Add(RNFCC); dict[FullName].Add(RNRFOMC); dict[FullName].Add(OKATO); } else { dict.Add(FullName, new List<string>()); dict[FullName].Add(Name); dict[FullName].Add(INNKPP); dict[FullName].Add(OGRN); dict[FullName].Add(UAdres); dict[FullName].Add(MAdres); dict[FullName].Add(Req); dict[FullName].Add(Number); dict[FullName].Add(OKVED); dict[FullName].Add(OKPO); dict[FullName].Add(OKFSOKOPF); dict[FullName].Add(GDer); dict[FullName].Add(GBug); dict[FullName].Add(RNPF); dict[FullName].Add(RNFCC); dict[FullName].Add(RNRFOMC); dict[FullName].Add(OKATO); } } foreach (var kvp in dict) { TreeNode parent = new TreeNode(kvp.Key); foreach (string Child in kvp.Value) { parent.Nodes.Add(Child); } treeView1.Nodes.Add(parent); } } } }
|
|