0
respostas

Popular um TreeView com o Banco de dados

Bom dia pessoal.

Estou com um problema e gostaria de saber se alguem aqui poderia me dar uma luz.

Tenho um treeview onde uso uma rotina que faz um select no SQL e me retorna uma DataTable (dt) e, usando esse dt, eu monto os nós do treeview, conforme o código abaixo:

For i = 0 To dt.Rows.Count - 1

                    sRef2 = Trim(dt.Rows.Item(i).Item(0))
                    sTitulo = Trim(dt.Rows.Item(i).Item(1))
                    sFuncao = Trim(dt.Rows.Item(i).Item(2))
                    sCodFnc = Trim(dt.Rows.Item(i).Item(3))
                    sCodNode = Trim(dt.Rows.Item(i).Item(4))
                    sStringMDI = Trim(dt.Rows.Item(i).Item(5))
                    nNivel = sRef2.Length


                    If sRef2.Length = 5 Then
                        Dim child As New TreeNode() With {.Text = sTitulo, .Target = sFuncao, .Value = sStringMDI}
                        nNivel1 += 1 : nNivel2 = -1 : nNivel3 = -1 : nNivel4 = -1 : nNivel5 = -1
                        TreeView1.Nodes.AddAt(nNivel1, child)
                    End If

                    If sRef2.Length = 8 Then
                        Dim node = New TreeNode() With {.Text = sTitulo, .Target = sFuncao, .Value = sStringMDI}
                        TreeView1.Nodes(nNivel1).ChildNodes.Add(node)
                        nNivel2 += 1 : nNivel3 = -1 : nNivel4 = -1 : nNivel5 = -1
                    End If

                    If sRef2.Length = 11 Then
                        Dim node = New TreeNode() With {.Text = sTitulo, .Target = sFuncao, .Value = sStringMDI}
                        TreeView1.Nodes(nNivel1).ChildNodes(nNivel2).ChildNodes.Add(node)
                        nNivel3 += 1 : nNivel4 = -1 : nNivel5 = -1
                    End If

                    If sRef2.Length = 14 Then
                        Dim node = New TreeNode() With {.Text = sTitulo, .Target = sFuncao, .Value = sStringMDI}
                        TreeView1.Nodes(nNivel1).ChildNodes(nNivel2).ChildNodes(nNivel3).ChildNodes.Add(node)
                        nNivel4 = nNivel4 + 1 : nNivel5 = -1
                    End If

                    If sRef2.Length = 17 Then
                        Dim node = New TreeNode() With {.Text = sTitulo, .Target = sFuncao, .Value = sStringMDI}
                        TreeView1.Nodes(nNivel1).ChildNodes(nNivel2).ChildNodes(nNivel3).ChildNodes(nNivel4).ChildNodes.Add(node)
                        nNivel5 += 1
                    End If

                Next

Até aí tudo perfeito.

Alguns dos Treeviews que eu monto chegam a ter até 5 níveis de nós e mais de 80 itens no total.

Tenho uma rotina no SelectedNodeChanced que uso para me redirecionar para a página que este nó representa no programa, conforme abaixo:

 Response.Redirect(Trim(TreeView1.SelectedNode.Target) & ".aspx")

E essa rotina também funciona de uma forma ok, até me deparar com o seguinte problema.

Digamos que em um nível de nó eu tenha 7 itens (ADM001, ADM002, ....., ADM007). Se eu clicar no ADM001 ele me redireciona para a página ADM001.apsx, a mesma coisa com o ADM002, que me redireciona para o ADM002.aspx. O mesmo para o ADM006 e o ADM007.

Agora, por algum motivo que eu não consigo entender, as páginas de 003 até 005 são redirecionadas para o ADM002.

Eu testei isso com várias tabelas diferentes e todas apresentam o mesmo problema.

Será que algum abençoado aqui poderia me iluminar?

Obrigado