Aiutoooo Treeview

mercoledì 01 dicembre 2004 - 15.40

Tantalo Profilo | Newbie

In tutti gli esempi visti in rete la generazione del treeview non viene mai spinta oltre il secondo livello, in sostanza abbiamo
Padre1
|-------->Figlio1
|-------->Figlio2
Padre2
|-------->Figlio3
|-------->Figlio4

Ma se la situazione fosse questa:
Padre1
|-------->Figlio1
|-------->Figlio2
.................|--------> Figlio5

Il Figlio2 diventa a sua volta il padre di Figlio5.
Come viene gestita qiesta condizione ?

A titolo informativo vi incollo la funzione che attualmente ho sviluppato:

Public Function Categories()

Dim J As Integer
Dim parentNode As TreeNode
Dim id_categoria As Integer
Dim parentName As String
DBQuery.CommandText = "SELECT c.categories_id,cd.categories_name,c.parent_id FROM categories c LEFT JOIN categories_description cd ON c.categories_id = cd.categories_id ORDER BY c.parent_id,c.categories_id"

datRead = DBQuery.ExecuteReader
albero.BeginUpdate()
albero.Nodes.Clear()
While datRead.Read()
If (datRead("parent_id") = "0") Then
MessageBox.Show("PADRE " + datRead("categories_id"))
Me.albero.Nodes.Add(New TreeNode(datRead("categories_id")))
Else
parentName = datRead("parent_id")
parentNode = Nothing
For J = 0 To albero.Nodes.Count - 1
If albero.Nodes(J).Text = parentName Then
parentNode = albero.Nodes(J)
End If
Next
If Not (parentNode Is Nothing) Then

parentNode.Nodes.Add(datRead("categories_id"))

End If
End If
End While
albero.EndUpdate()
datRead.Close()
End Function



Brainkiller Profilo | Guru

Ciao,
non so se ho capito bene. Però per fare questo tipo di cose generalmente si usano le funzioni ricorsive ossai funzione che richiamano loro stesse e permettono fra le altre cose di scorrere un albero di qualsiasi tipo compreso il file system di files e cartelle.

Matteo ha scritto un utile articolo sulla ricorsività:
http://www.dotnethell.it/articles/FunzioniRicorsive.aspx

Allo stesso modo puoi popolare una Treeview.

ciao
david

Tantalo Profilo | Newbie

Grazie Guru, mi vado a leggere subito l'articolo.
Ne approfitto per chiederti un'altra cosa sempre legata al treeview.
Quando creo una struttura ad albero aggiungo il nuovo elemento con Nodes.Add, ma come faccio a dire qual'è l'elemento che voglio visualizzato nell'albero e il valore che invece voglio legare all'elemento ? Add infatti non accetta parametri

Tantalo Profilo | Newbie

Perfetto Guru, grazie all'articolo che mi hai indicato sono risuscito a realizzare una funzione ricorsiva che mi costruisce un treeview cion i nodi padre e figlio al loro posto.
Mi resta da risolvere il problema dell'assegnazione di un valore al nodo selezionato che sia diverso da quello visualizzato (ad esempio al Nodo Pippo associare il valore 12)
Qualcuno può darmi delle dritte ?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5