![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Ronin08 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: нет Всего: 1 |
Доброго времени суток
Имеется таблица адресов в БД с полями
улица ссылается(ParentId) на район, район ссылается(ParentId) на город у города ParentId = null Использую Entity Framework. Получил объект Addresses c такими же именами свойствами как и имена полей. Теперь нужно в дереве отобразить города и районы. Первый уровень заполняю так
как сделать чтобы при кликании на город отображались дочерние элементы(районы)? Это сообщение отредактировал(а) Ronin08 - 7.7.2011, 15:57 --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Я полагаю, что навигационные св-ва в твоих объектах имеются, поэтому используй HierarchicalDataTemplate ;)
http://msdn.microsoft.com/en-us/library/ms742521.aspx |
|||
|
||||
| Ronin08 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: нет Всего: 1 |
в смысле навигационные свойства?
В моем случае каждый объект c Addresses.Level > 1 имеет ссылку на другой объект в этой же коллекции! --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Ну энивей, имея парента ты можешь получить его киндеров (хотя бы Addresses.Where(o => o.ParentId == someParentId)). Сделай HierarchicalDataTemplate и привязывайся к детям.
А про навигационные св-ва я говорил в контексте Entity Framework. Там же можно иметь Navigation Property, через которые получать детей. |
|||
|
||||
| Ronin08 |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: нет Всего: 1 |
Да имеются!
А вот в этом как раз проблема! Я пытался сделать так
Но в данном случае все элементы отображаются на верхнем уровне --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
||||||||||
|
|||||||||||
| Kefir |
|
||||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Ну хорошо. В общем так - тебе надо:
1) Список корневых элементов 2) Правильный дата темплейт Вот тут у тебя была правильная выборка корневых элементов
Правильный дата темплейт (твой почти правильный):
(обрати внимание что в ItemsSource темплейта прописывать надо путь к детям) |
||||
|
|||||
| Ronin08 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: нет Всего: 1 |
Kefir, спасибо, получилось, только появился сопутствующий вопрос. у меня всего в БД для этой таблицы 3 уровня иерархии, но надо чтобы в TreeView отображалось только 2!, т.е. Где Level = 1 или 2. Как это можно сделать?
Думал сделать вьюху в БД (где Level = 1,2), но тогда не будет навигационных свойств! и не получится построить иерархию. Это сообщение отредактировал(а) Ronin08 - 10.7.2011, 01:23 --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Можешь сделать банально прокси св-во в твоём классе по типу
И привязывайся к этому св-ву - оно будет смотреть - если уровень себя больше двух, то детей возвращать просто не будет. И в добавок (если есть надобность в авто-обновлении детей) - используй CollectionView / ListCollectionView. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |