[ nebojsa4 @ 14.09.2012. 06:51 ] @
Evo problema. Imam Treeview koji zelim da popunim na sledeci nacin tj. da izgleda ovako nekako :

Code:

[+] Parent 1 (GRedBr=1,GParent=0)
    --- Child 1 (GRedBr=4,GParent=1)
    [+] Child 2 (GRedBr=5,GParent=1)
       --- SubChild 2-1 (GRedBr=7,GParent=5)
       --- SubChild 2-2 (GRedBr=8,GParent=5)
[+] Parent 2 (GRedBr=2,GParent=0)
    --- Child 3 (GRedBr=3,GParent=2)
    --- Child 4 (GRedBr=6,GParent=2)

Ovo GRedBr i GParent su polja u mdb-u.

Imam 2 button-a ("Upis grupe","Upis podgrupe")
Funkcionise na sledeci nacin :
- kada kliknem na "Upis grupe" tada se radi o Root node-u
- kada kliknem na "Upis podgrupe" upisuje se kao child node u prethodno selektovanom node-u
Radi se o tome da ih prvo zapisujem (jedan po jedan) u bazu pa tek onda vrsim popunjavanje treeview-a

evo koda :
Code:

  Private Sub tv1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tv1.SelectedNodeChanged
      Session.Item("SelGRP") = CLng(tv1.SelectedNode.Value.ToString)
  End Sub

  Private Sub btnSnimi_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSnimi.Click
   'vrsi se snimanje u naziva grupe u bazu
   'mdb im polja : GRedBr, GParent, GNaziv
   'gde je GRedBr redni broj zapisa, GParent je 0 ako se radi o root-u ili redni broj selektovanog, Parent, noda ako se radi o child
   Listaj()
  End Sub

 Public Sub Listaj()
tv1.Nodes.Clear()
        Session.Item("strSql") = "SELECT * FROM Grupe ORDER BY GParent ASC, GRedBr ASC;"
        'sortiranje vrsim na ovaj nacin da bi se hijerarhijskim redosledom popunjavao treeview
        OpenDB()
        cmd = New SqlCommand(Session.Item("strSql").ToString, conn)
        tds = cmd.ExecuteReader
        If tds.HasRows = True Then
            Do While tds.Read
                'ubacivanje root node-a
                If tds("GParent") = 0 Then
                    Dim nd As New TreeNode(tds("GNaziv"), tds("GRedBr").ToString)
                    tv1.Nodes.Add(nd)
                Else
                    'ubacivanje child node-a - OVDE SE JAVLJA PROBLEM
                    For Each td As TreeNode In tv1.Nodes
                        If td.Value.ToString = tds("GParent").ToString Then
                            Dim nd As New TreeNode(tds("GNaziv"), tds("GRedBr").ToString)
                            td.ChildNodes.Add(nd)
                            Exit For
                        End If
                    Next
                End If
            Loop
        End If
        tds.Close() : tds = Nothing : cmd.Dispose() : cmd = Nothing : conn.Close() : conn.Dispose() : conn = Nothing
        tv1.CollapseAll()
        If Session.Item("SelGRP") > 0 Then
            lblSelGRP.Text = Session.Item("SelGRP").ToString
            For Each ts As TreeNode In tv1.Nodes
                If ts.Value.ToString = Session.Item("SelGRP").ToString Then
                    Try
                        ts.Expand()
                    Catch ex As Exception

                    End Try
                    Exit For
                End If
            Next
        End If
 End Sub


Rezultat procedure navedene u ovom primeru : izvrsi popunjavanje root node-a, izvrsi ubacivanje svih Child node-a u pripadajuci Parent ali ne izvrsi ubacivanje SubChild node-a u Child 2 node.
Takodje, ne izvrsi se Expand selektovanog node-a.

Znaci, izvrsi se, hijerarhiski gledano, ubacivanje svih root (parent) node-a i 1. reda child node-a ali ne i 2.reda (SubChild 2-1 i SubChild 2-2).
Da li neko zna u cemu je problem?
Problem se javlja i u drugom delu koda, jer se ne izvrsi Expand selektovanog Parent node-a (ima svoje child-ove, znaci trebalo bi).

Unapred hvala svima na odgovorima, sugestijama.

Pozdrav svima.
[ nebojsa4 @ 14.09.2012. 11:04 ] @
Resenje : umesto For Each upotrebio sam For Next u kombinaciji sa FindNode, itd, itd.
Sve u svemu - problem resen na sasvim drugi nacin.