Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
jcp
100 / 22 / 12
Регистрация: 12.12.2013
Сообщений: 200
Записей в блоге: 1
Завершенные тесты: 2
1

Построение TreeView на основе БД с помощью HierarchicalDataTemplate

16.07.2015, 12:51. Просмотров 483. Ответов 6
Метки нет (Все метки)

Помогите с построением иерархического TreeView.
PARENTID - родитель.
в XAML
XML
1
2
 <TreeView ItemsSource="{Binding NomenclatureGroups, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="TITLE" VerticalContentAlignment="Stretch" ScrollViewer.CanContentScroll="True" >                
 </TreeView>
ViewModel
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
 void ReadAllNomeclatureGroup()
        {
            var q = new ObservableCollection<RBNOMENCLAUREGROUP>(_p.RBNOMENCLAUREGROUPS.Where(a => a.ITREMOVED == 0).OrderBy(a => a.ID).ThenBy(a => a.TITLE));
            NomenclatureGroups = q;
        }
 
 public RBNOMENCLAUREGROUP NomenclatureGroupInfo
        {
            get { return _nomenclatureGroupInfo; }
            set
            {
                if (Equals(value, _nomenclatureGroupInfo)) return;
                _nomenclatureGroupInfo = value;
                ReadNomenclature();
                RaisePropertyChanged();
 
            }
        }
 
 public ObservableCollection<RBNOMENCLAUREGROUP> NomenclatureGroups
        {
            get { return _nomenclatureGroups; }
            set { _nomenclatureGroups = value; RaisePropertyChanged(); }
        }
В БД

SQL
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
/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/
CREATE TABLE RBNOMENCLAUREGROUPS (
    ID          AWPKEY NOT NULL /* AWPKEY = INTEGER NOT NULL */,
    GUID        AWGUID /* AWGUID = CHAR(36) */,
    CID         AWCID /* AWCID = VARCHAR(17) NOT NULL */,
    PARENTID    AWFKEY DEFAULT 0 /* AWFKEY = INTEGER DEFAULT 0 NOT NULL */,
    TITLE       AWTITLE /* AWTITLE = VARCHAR(100) DEFAULT '' NOT NULL */,
    TITLEFULL   AWTITLE250NULL /* AWTITLE250NULL = VARCHAR(250) */,
    ANNOTATION  AWCOMMENTNULL /* AWCOMMENTNULL = VARCHAR(1000) */,
    ITREMOVED   AWBOOL DEFAULT 0 /* AWBOOL = SMALLINT DEFAULT 0 NOT NULL CHECK (value in (0, 1)) */
);
 
/******************************************************************************/
/***                          Fields descriptions                           ***/
/******************************************************************************/
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.ID IS 
'#PK_GEN#';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.GUID IS 
'Guid';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.CID IS 
'Учетный номер';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.PARENTID IS 
'Родитель';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.TITLE IS 
'Наименование';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.TITLEFULL IS 
'Наименование полное';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.ANNOTATION IS 
'Примечание';
 
COMMENT ON COLUMN RBNOMENCLAUREGROUPS.ITREMOVED IS 
'Булево (1 - да, 0 - нет) Флаг удаления';
Добавлено через 46 минут
Данные в таблице

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (2, 'F7E83685-611B-4B12-B01C-F6E9F2C5F94D', '000000000002', 0, 'Все', 'Все для группировки', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (3, 'CCDB7030-EC81-4520-BA83-7848109D6E42', '000000000003', 2, 'Бумага', 'Бумага все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (4, '190FE0FD-8111-4BBD-B684-D2A3B596E94A', '000000000004', 2, 'Штампы', 'Штампы все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (5, '2B685239-9C40-4615-86BB-CF49E3C2AEE4', '000000000005', 2, 'Запчасти', 'Запчасти  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (6, 'A64487D9-29A1-4440-B38F-8A7F056F76CC', '000000000006', 2, 'Картон', 'Картон  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (7, '9E7E09CA-05C5-4900-A87E-B3BE6CDE171A', '000000000007', 2, 'Клей', 'Клей  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (8, '1EDDDDE1-29A8-4FDF-953E-F36B8B23DDCA', '000000000008', 2, 'Клише', 'Клише  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (9, 'AEE355ED-4DA5-4C82-82A9-39D9C2252A0C', '000000000009', 2, 'Комплектующие', 'Комплектующие  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (10, 'A3F33B65-C61E-4150-8A30-D048871F70D5', '000000000010', 2, 'Краски, пантоны', 'Краски, пантоны  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (11, '2EA757E5-E4AE-40B5-87DC-E43282276E2B', '000000000011', 2, 'Лаки', 'Лаки  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (12, 'C0F06EF4-9C85-4882-8DDC-73B4484028D5', '000000000012', 2, 'Материалы', 'Материалы  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (13, '4B9EB812-BB4E-486B-ABFB-00E074AA9EFB', '000000000013', 2, 'Пластины, формы', 'Пластины, формы  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (14, '0B497F1A-E011-4765-8614-045C20226122', '000000000014', 2, 'Пленки', 'Пленки  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (15, '6C3E40F9-2E87-4438-8F0E-F7ECB26928A3', '000000000015', 2, 'Полуфабрикаты', 'Полуфабрикаты  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (16, '17203A63-4973-4B9A-A149-E148BC6C7D36', '000000000016', 2, 'Расходные', 'Расходные материалы  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (17, '8087F53E-87E0-48BB-A577-FA3CEEDF27B2', '000000000017', 2, 'Упаковка', 'Упаковка  все виды', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (18, '89013D65-753A-4320-9706-DA5ADE1D132E', '000000000018', 3, 'Листовая', 'Бумага листовая', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (19, '7F1FE745-FC72-497A-8FFD-1E8F1BC8FDB2', '000000000019', 3, 'Ролевая', 'Бумага в ролях', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (20, '5DCC91E9-C65A-4318-B31A-6E7A1B79F021', '000000000020', 6, 'Ролевой', 'Картон в ролях', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (21, 'D445C628-93C7-4461-AA0F-615AD06CFE7E', '000000000021', 6, 'Листовой', 'Картон в листах', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (22, '6019F9C9-B2DE-4B76-BC15-3907D47F549C', '000000000022', 2, 'Продукция', 'Готовая продукция', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (23, 'DC9180BF-CA8A-453F-A597-A097AA13A66D', '000000000023', 22, 'Канцелярия', 'Канцелярия', NULL, 0);
INSERT INTO RBNOMENCLAUREGROUPS (ID, GUID, CID, PARENTID, TITLE, TITLEFULL, ANNOTATION, ITREMOVED) VALUES (24, 'CBE6D5DC-9C34-4DA7-9EDB-E99539F41959', '000000000024', 23, 'Тетради', 'Тетради', NULL, 0);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2015, 12:51
Ответы с готовыми решениями:

TreeView HierarchicalDataTemplate из простого списка
Всем привет. Что-то не могу найти решения на простой вопрос (на более сложные...

3D сканирование. Построение модели на основе STL
Здравствуйте, есть задача, о выполнении которой, у меня нет ни малейшего...

При работе с HierarchicalDataTemplate не отображаются элементы
Добрый день, настроил HierarchicalDataTemplate using System; using...

Получить полный путь к TreeViewItem с HierarchicalDataTemplate
Вопрос в продолжение этой темы. Признаюсь сразу - у меня просто не хватает...

TreeView: построение дерева на основе данных из БД Access
Такова проблема. Есть 3 таблицы в БД. 1-компания, 2 - отдел, 3-пользователь в...

6
jcp
100 / 22 / 12
Регистрация: 12.12.2013
Сообщений: 200
Записей в блоге: 1
Завершенные тесты: 2
16.07.2015, 12:59  [ТС] 2
Дерево примерно нужно такое
Построение TreeView на основе БД с помощью HierarchicalDataTemplate

А вот глубина неограниченная
0
jcp
100 / 22 / 12
Регистрация: 12.12.2013
Сообщений: 200
Записей в блоге: 1
Завершенные тесты: 2
20.07.2015, 12:41  [ТС] 3
вопрос еще актуален

Добавлено через 1 минуту
Casper-SC - можете ткнуть в какую сторону копать?? CompositeCollection ??
0
Casper-SC
Эксперт .NET
3638 / 1843 / 360
Регистрация: 27.03.2010
Сообщений: 5,164
Записей в блоге: 1
20.07.2015, 13:16 4
jcp, тут правда гигантская статья, но вроде по увиденному ниже на скриншотах и чуть прочитав там строится дерево неограниченной вложенности.
http://habrahabr.ru/post/94231/
1
jcp
100 / 22 / 12
Регистрация: 12.12.2013
Сообщений: 200
Записей в блоге: 1
Завершенные тесты: 2
20.07.2015, 17:35  [ТС] 5
Цитата Сообщение от Casper-SC Посмотреть сообщение
дерево неограниченной вложенности
А не подскажете каким образом связать коллекции. Проблема в том что, PARENID это отношение к ID этой же таблицы? Создавать несколько коллекций? Или все-таки Join и в одну коллекцию?
Уппс. Не дочитал статью)). Вроде как вижу визуальное построение. Сейчас буду разбираться с кодом

Добавлено через 3 минуты
Как-то с полгода назад помню что читал эту статью. Но в закладки не добавил. Решение интересное

Засада. Исходники похерили

Добавлено через 1 час 58 минут
с Convertor-ом проблемка.
0
jcp
100 / 22 / 12
Регистрация: 12.12.2013
Сообщений: 200
Записей в блоге: 1
Завершенные тесты: 2
24.07.2015, 09:34  [ТС] 6
Вот вроде что-то накриворучил
Casper-SC, Можете посмотреть??
0
Gul-79
46 / 46 / 11
Регистрация: 13.08.2012
Сообщений: 97
Завершенные тесты: 1
24.07.2015, 12:06 7
Вью:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Window.Resources>
        <ResourceDictionary>
            <HierarchicalDataTemplate x:Key="MasterTemplate" ItemsSource="{Binding SlaveGroups}">
                <TextBlock Text="{Binding Name}" />
            </HierarchicalDataTemplate>
        </ResourceDictionary>
    </Window.Resources>
 
 
<TreeView
        DataContext="{Binding }"
        ItemsSource="{Binding NomenclatureGroups}"
        ItemTemplate="{StaticResource MasterTemplate}" 
 
        VirtualizingPanel.IsVirtualizing="True"
        VirtualizingPanel.VirtualizationMode="Recycling" 
</TreeView>
Вью модель:

C#
1
public ObservableCollection<NomenclatureGroup> NomenclatureGroups{ get; private set; }
Модель, сделай примерно так:

C#
1
2
3
4
5
6
public class NomenclatureGroup
{
        public string Name { get; set; };
        public ObservableCollection<NomenclatureGroup> SlaveGroups { get; set; };
 
}
Собираешь примерно такую коллекцию джойнами и биндиш к дереву, не забудь реализовать INotifyPropertyChanged в модели
0
24.07.2015, 12:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2015, 12:06

TreeView: построение дерева на основе данных из БД Oracle 11g xe
Добрый вечер.Столкнулся с такой проблемой.У меня есть три таблицы Partners ...

Парсинг файлов формата IFC и построение дерева TreeView на основе полученных данных
Всем здрасти! У меня ужасное положение. Мне нужно сдавать проект. Проект парсит...

Добавление элементов в TreeView на основе существующих
Привет! Никогда не работал с TreeView, но сейчас пришлось:(. Нужно создать...


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

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

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