Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[Vb.net] Aiuto nella creazione di una ricorsione
lunedì 15 novembre 2010 - 23.17
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
seven.7
Profilo
| Junior Member
127
messaggi | Data Invio:
lun 15 nov 2010 - 23:17
Buonasera a tutti,
ho un problema nella creazione di un ricorsione con treeview/treenode. Sicuramente sarà qualche riga di codice ma ci stò perdendo la testa... sarà la stanchezza forse ma stasera non connetto proprio :) Ad ogni modo ho un database mysql con una tabella contenente questi dati :
ID categoria ; ID_padre ; Nome
1 ; 0 ; Fiat
2; 0 ; Lancia
3; 1 ; Punto
4; 3 ; 1.3 Multijet
e così via...
A questo punto il risultato che vorrei visualizzare nel treeview
* Fiat
** Punto
***1.3 Multijet
* Lancia
Ho scritto questo codice ma mi fermo al 2° livello (punto)... 1.3 Multijet viene riportante sempre sotto Fiat e non sotto Punto.
[CODE]Private Sub ApplicazioniTreeNode(Optional ByVal idpadre As Integer = 0) For Each dr As DataGridViewRow In Me.DataGridView1.Rows If dr.Cells("id_padre").Value = idpadre Then Dim nodo As New TreeNode nodo.Tag = dr.Cells("id").Value nodo.Text = dr.Cells("nome").Value ' If dr.Cells("id_padre").Value = 0 Then Me.TreeView1.Nodes.Add(nodo.Tag, nodo.Text) Else Dim index As Integer = RecuperaNodo(idpadre) Me.TreeView1.Nodes(index).Nodes.Add(nodo.Tag, nodo.Text) End If ApplicazioniTreeNode(nodo.Tag) End If Next End Sub[/CODE]
Vorrei anche conservare sempre l'id del record nel treeview ma per questo penso che posso risolvere creando una classe da aggiungere come oggetto nel tag del treenode.
In ogni caso grazie mille.
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mar 16 nov 2010 - 08:43
ciao.
Cambia la tua SUB con questa. Visto che usi la ricorsione è inutile usare un'altra funzione per determinare il padre. Il nodo padre è quello che stai ciclando....
Private Sub ApplicazioniTreeNode(Optional ByVal idpadre As Integer = 0, Optional ByVal ParentNode As TreeNode = Nothing)
For Each dr As DataGridViewRow In Me.DataGridView1.Rows
If dr.Cells("id_padre").Value = idpadre Then
Dim nodo As TreeNode = New TreeNode
nodo.Tag = dr.Cells("id").Value
nodo.Text = dr.Cells("nome").Value
If ParentNode Is Nothing Then
Me.TreeView1.Nodes.Add(nodo)
Else
ParentNode.Nodes.Add(nodo)
End If
ApplicazioniTreeNode(CInt(nodo.Tag), nodo)
End If
Next
End Sub
Cristian Barca
Torna su
Stanze Forum
Elenco Threads
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 !