Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Temoxa
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
Завершенные тесты: 1
1

Сформировать дерево TreeView по данным из БД

28.05.2012, 05:40. Просмотров 2492. Ответов 2
Метки нет (Все метки)

Привет ребята! Вот смотрите, есть стандартная таблица дерева)

TreeID,
LevelID,
ParentID,
Name
Например, данные такие

1 1 NULL Телевизоры
2 2 1 Samsung
3 2 1 Sony

И как теперь заполнить TreeView из такой таблицы?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 05:40
Ответы с готовыми решениями:

Сформировать XML-документ по данным TreeView
Доброго времени суток, у меня такой вопрос, я читаю и вывожу свой XML документ в виде дерева,...

Сформировать дерево TreeView данными из таблицы
Люди помогите очень нужно Есть таблица в БД следующего вида: id организация id_отдел отдел 1 ...

Сформировать дерево Т и определить число вхождений параметра Е в дерево Т - Блок схема
Сформировать дерево Т и определить число вхождений параметра Е в дерево Т. Вот решение задачи,...

Как построить treeview по данным из таблицы
Доброе утро! Подскажите, пожалуйста, как можно построить treeview вот при такой организации данных...

Построить treeView согласно данным из XML
Всем привет. Мучаюсь с этим вопросом уже два дня. Мне уже помогали - но код был не валидным. Буду...

2
MATiAiX
4 / 4 / 1
Регистрация: 31.05.2012
Сообщений: 20
07.06.2012, 12:23 2
Мне думается тут твою таблицу нужно разделить на таблицу например "номенклатура" и "ТВ". А по заполнению посмотреть в сторону datatemplate.
0
Unril
803 / 694 / 109
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
10.06.2012, 00:15 3
Лучший ответ Сообщение было отмечено Temoxa как решение

Решение

На основе исходных данных формируешь древовидную структуру из класса Node, имеющего поля Name и список с потомками. Создаешь HierarchicalDataTemplate с необходимыми параметрами отображения. После этого создаёшь элемент TreeView и привязываешь корень дерева к его свойстве ItemsSource. Готово.

Добавлено через 1 час 26 минут
Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
namespace WpfApplicationTest {
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows;
 
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
 
            var records = new List<Record>
                {
                    new Record
                        {
                            Name = "Телевизоры",
                            TreeId = 1,
                            ParentId = 0
                        },
                    new Record
                        {
                            Name = "Samsung",
                            TreeId = 2,
                            ParentId = 1
                        },
                    new Record
                        {
                            Name = "Sony",
                            TreeId = 3,
                            ParentId = 1
                        },
                    new Record
                        {
                            Name = "Sony1",
                            TreeId = 4,
                            ParentId = 3
                        },
                    new Record
                        {
                            Name = "Sony2",
                            TreeId = 5,
                            ParentId = 3
                        },
                    new Record
                        {
                            Name = "Samsung1",
                            TreeId = 6,
                            ParentId = 2
                        }
                };
 
            var root = CreateTree(records);
 
            tree.ItemsSource = new[] { root };
        }
 
        private static Node CreateTree(List<Record> records) {
            Record rootRecord = records.First(r => r.ParentId == 0);
            var root = new Node(rootRecord.Name, rootRecord.TreeId);
            foreach (Record record in records.Where(r => r.ParentId != 0)) {
                root.Add(record);
            }
            return root;
        }
    }
 
    public class Record {
        public int TreeId { get; set; }
 
        public int ParentId { get; set; }
 
        public string Name { get; set; }
    }
 
    public class Node {
        public Node(string name, int id) {
            Id = id;
            Name = name;
            Children = new List<Node>();
        }
 
        public string Name { get; set; }
 
        public List<Node> Children { get; set; }
 
        public int Id { get; set; }
 
        public override string ToString() {
            return string.Format("Name: {0}", Name);
        }
 
        public void Add(Record record) {
            Traverse().First(node => node.Id == record.ParentId).Children.Add(new Node(record.Name, record.TreeId));
        }
 
        private IEnumerable<Node> Traverse() {
            yield return this;
            foreach (Node child in Children.SelectMany(node => node.Traverse())) {
                yield return child;
            }
        }
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<Window x:Class="WpfApplicationTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="350" Width="525" Background="#FFF8F8F8"
        Title="MainWindow" xmlns:src="clr-namespace:WpfApplicationTest">
  <Grid>
    <TreeView x:Name="tree">
      <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type src:Node}" ItemsSource="{Binding Path=Children}">
          <TextBlock Text="{Binding Path=Name}" />
        </HierarchicalDataTemplate>
      </TreeView.Resources>
    </TreeView>
  </Grid>
</Window>
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 00:15

Не верно отображается TreeView, сформированный по данным из БД
Здраствуйте, подскажите пожайлуста. есть база Acess состоящая всего из двух таблиц Ylica, Dom. ...

Формирование дерева TreeView по данным из текстового файла
Подскажите пожалуйста, есть текстовый файл &quot;menu.txt&quot; котрый можно редактирорвать вручную в виду...

Формирование дерева Treeview по данным из бд или excel
Как это осуществить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.