Работа с TreeView...Как определить родительскую ноду и пр.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

.COM
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 11.07.2003 (Пт) 22:10
Откуда: Россия, Москва

Работа с TreeView...Как определить родительскую ноду и пр.

Сообщение .COM » 14.11.2003 (Пт) 14:38

Всем приветы....

Есть дерево:

Предприятие1

...........Выручка

...........Затраты

...........Адрес

...........и т.д.

Предприятие2

...........Выручка

...........Затраты

...........Адрес

...........и т.д.

Предприятие N

...........и т.д.

Короче, предприятий может быть сколько угодно. Свойство Text у всех дочерних нод одинаковое (т.е. по этому свойству невозможно однозначно идентифицировать дочернюю ноду). В свойстве Tag для родительской ноды (Предприятие) записываются названия таблиц в базе данных.

Таким образом, предположим получаем такую ситуацию...Юзер развернув несколько веток Предприятие1, Предприятие6, Предприятие28, думает чего бы ему посмотреть, а потом щелкает по какой-либо дочерней ноде.

А вот и собственно вопросы:

Как, блин, определить к какому родителю относится дочерняя нода, чтоб соответственно считать ее Tag и отправить запрос в базу...?

Как программно найти/выделить определенную ноду (т.е. есть ли у каждой ноды уникальный идентификатор с точки зрения всего контрола независимо от того родительская она или дочерняя)?

P.S. Теоретически (хоть и маловероятно) может случится ситуация когда и наименования родителей (Предприятия) будут одинаковыми, поэтому не подходит такой вариант как считать из дочерней ноды путь и вытащить оттуда наименование родителя...В идеале хотелось бы иметь уникальный идентификатор для каждой ноды в контроле. (еще один вопрос)

Код готовый не прошу, подскажите хотя бы, в какую сторону и как долго рыть :-)

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 14.11.2003 (Пт) 15:25

На форму выложить два элемента: TreeView и TextBox
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
   
    With TreeView1
       
        .Nodes.Add , , "work1", "Work 1"
        .Nodes.Add "work1", tvwChild, "work1child1", "Shild 1"
        .Nodes.Add "work1", tvwChild, "work1child2", "Shild 2"
       
        .Nodes.Add , , "work2", "Work 2"
        .Nodes.Add "work2", tvwChild, "work2child1", "Shild 1"
        .Nodes.Add "work2", tvwChild, "work2child2", "Shild 2"
       
        .Nodes.Add , , "work3", "Work 3"
        .Nodes.Add "work3", tvwChild, "work3child1", "Shild 1"
        .Nodes.Add "work3", tvwChild, "work3child2", "Shild 2"
       
    End With
   
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
   
    If (Not Node.Parent Is Nothing) Then Text1.Text = Node.Parent.Key
   
End Sub

.COM
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 11.07.2003 (Пт) 22:10
Откуда: Россия, Москва

Сообщение .COM » 14.11.2003 (Пт) 16:06

хм...это ж вроде VB6...

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 14.11.2003 (Пт) 16:11

Старый глюк. :( Забываю на название раздела смотреть. Давно предлагал сделать фичу для фильтрации сообщений, но воз и ныне там.

А что в .NET уже другие свойства у одноимённых контролов?

.COM
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 11.07.2003 (Пт) 22:10
Откуда: Россия, Москва

Сообщение .COM » 14.11.2003 (Пт) 16:19

Ну например создание ноды происходит так:

Dim newNode As TreeNode = New TreeNode("node1")
TreeView1.SelectedNode.Nodes.Add(newNode)

без всяких Key...В этом то и проблема....

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 17.11.2003 (Пн) 18:39

В MSDN!!!! Или лучше в QuickStarts :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

B@mper
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 01.04.2002 (Пн) 4:13
Откуда: Russia

Сообщение B@mper » 03.01.2004 (Сб) 23:47

Чтобы узнать какой у Тебя родительский нод пользуй пропертю parent у чайлда..тьфу...заговорился...
Кароче leaf.parent
И исходя из парента можешь узнать уже что угодно о родителе (корне повыше)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 04.01.2004 (Вс) 16:27

http://localhost/quickstart/winforms/do ... ewCtl.aspx

После установки MSDN и QuickStarts запусти IIS и вперед сюда.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

    TopList