Foros del Web » Programación para mayores de 30 ;) » .NET »

Llenar un treeview desde una tabla en SQL

Estas en el tema de Llenar un treeview desde una tabla en SQL en el foro de .NET en Foros del Web. Hola a todos y todas quiero llenar un treeview con los datos de una tabla en SQL2005 pero solo conguigo llenar los datos padres pero ...
  #1 (permalink)  
Antiguo 18/10/2007, 15:58
 
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Busqueda Llenar un treeview desde una tabla en SQL

Hola a todos y todas
quiero llenar un treeview con los datos de una tabla en SQL2005 pero solo conguigo llenar los datos padres pero los nodos hijos no se añaden dentro de los padres sino en el nodo principal.... espero q me puedan ayudar ahi les envio mi codigo para ver donde estoy fallando... toda sugerencia sera muy bien recibida

Sub llenaArbol()
Dim oNode As TreeNode
Dim nodoPadre As TreeNode
Dim nodoHijo As TreeNode
Dim conn As New SqlConnection(conexion)

Dim sql As String = "Select * FROM Ge_CATALOGO_MAPAS ORDER BY DOMI_CODIGO"
Dim cmd As SqlCommand
Dim drArbol As SqlDataReader
DAPerfil = New SqlDataAdapter(sql, conn)
cmd = New SqlCommand(sql, conn)
conn.Open()
drArbol = cmd.ExecuteReader
TreeView1.Nodes.Clear()
TreeView1.Nodes.Add("Catalogo SIG-CONELEC")

With drArbol

Do While .Read
oNode = New TreeNode
nodoPadre = New TreeNode
nodoHijo = New TreeNode

oNode.Tag = .Item("DOMI_CODIGO").ToString oNode.Text = .Item("DOMI_DESCRIPCION").ToString nodoHijo.Tag = .Item("DOMI_CODIGO").ToString
nodoHijo.Text = .Item("DOMI_DESCRIPCION").ToString
nodoHijo.Tag = .Item("DOMI_RELACION").ToString
If Len(.Item("DOMI_CODIGO").ToString.Trim) = 2 Then
TreeView1.Nodes(0).Nodes.Add(oNode)

Else
If Len(.Item("DOMI_CODIGO").ToString.Trim) = 4 & nodoHijo.Tag = "SubNodo" Then
TreeView1.Nodes(0).Nodes.Add(nodoHijo)

End If
End If

Loop

End With
DAPerfil.Dispose()
End Sub
  #2 (permalink)  
Antiguo 18/10/2007, 16:05
 
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta Llenar un treeview desde una tabla en SQL

mi tabla tiene estos campos, y lo q quiero me despleigue es la descripcion de mis campos espeo q me ayuden en eso

Codigo Relacion Padre Descrip

--------- --------- -------- --------------------
01 nodo null Archivo
0101 subnodo 01 Cambio Clave
0102 subnodo 01 Usuarios
0103 subnodo 01 Tablas
010301 hijo 0101 Documentos
010302 hijo 0101 Areas
  #3 (permalink)  
Antiguo 20/10/2007, 18:50
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Llenar un treeview desde una tabla en SQL

Hola amigo!!!

He escrito hace ya varios meses una posible solución a ese problema, dirigete al siguiente post:

http://www.forosdelweb.com/f29/carga...nsulta-488968/

Es una función que manda a llamar en el evento de cargar los nodos hijos; y puede soportarte hasta 50 niveles. y le puedes añadir los que necesites...

Espero te sea de utilidad..

Suerte.
__________________
El conocimiento se alimenta de la repeticion y la consistencia!!! (Miguel--in-- 1983---....)
  #4 (permalink)  
Antiguo 22/10/2007, 08:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Llenar un treeview desde una tabla en SQL

Gracias por enviarme ese link... epro ya lo habia revisado y tube un problema xq hay dos end if que no se en donde iniciann esos bucles o q condicion o comparacion haces..... de igual forma el load en una funcion q tu creaste porq como en vbnet 2005 donde estoy trabajndo me da un error en el load...

De igual forma en la linea aIndex(nLevel) = i dentro de la funcion Find_Items me da un error q se encuentra fuera del indice minimo... y de ahi no pasa... le hecho alguans modificaciones pero no se en donde esta fallando el codigo publicado por ti.... espero lo revises ´para encontrar una solucion gracias....
  #5 (permalink)  
Antiguo 22/10/2007, 10:33
 
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Llenar un treeview desde una tabla en SQL

Gracias por enviarme ese link... epro ya lo habia revisado y tube un problema xq hay dos end if que no se en donde iniciann esos bucles o q condicion o comparacion haces..... de igual forma el load en una funcion q tu creaste porq como en vbnet 2005 donde estoy trabajndo me da un error en el load...

De igual forma en la linea aIndex(nLevel) = i dentro de la funcion Find_Items me da un error q se encuentra fuera del indice minimo... y de ahi no pasa... le hecho alguans modificaciones pero no se en donde esta fallando el codigo publicado por ti.... espero lo revises ´para encontrar una solucion gracias....
  #6 (permalink)  
Antiguo 22/10/2007, 17:32
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 18 años, 6 meses
Puntos: 0
Mensaje Re: Llenar un treeview desde una tabla en SQL

Que onda chavo!!!

Tienes razón en los end if que van en el código, lo único que tienes que hacer es borrarlos; por lo de los indices que estan fuera del rango no se por ke te manda eso; recuerda que debes declarar e inicializar aIndex; de ahi en fuera no deberias tener ningun problema...

Si se te complica mucho esta función hay otra opción de llenado (recuerda que la función llena de golpe el arbol (tree) por que emplea recursividad); pero si quieres traer los nodos hijos del padre cada que des un clic sobre el nodo seleccionado, lo unico que harias sería indicarle en el evento AfterSelect (despues de la seleccion) que haga la consulta en la bd y que traiga los hijos del nodo padre que seleccionaste... Mas o menos asi

Código:
Private Sub mytree_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles mytree.AfterSelect

query = " select * from tabla where nodo_padre = " & mytree.SelectedNode.Tag
'haces un for para recorrer todos los nodos

tree.SelectedNode.Nodes.Add(oNode)

  End Sub
__________________
El conocimiento se alimenta de la repeticion y la consistencia!!! (Miguel--in-- 1983---....)
  #7 (permalink)  
Antiguo 23/10/2007, 09:54
 
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Llenar un treeview desde una tabla en SQL

Hola miguelillo2

Gracias x responderme y claro esa fue la otra idea q se me ocurrio para q selccionando el nodo padre me aparescan los hijos.... como soy nuevo en esta herramienta... ya voy a seguir tu consejo... pero si puedes ayudarme a poder recorrer los nodos con el for q me dices... ahi voy a probar yo haciendo uno... pero tu sugerencia tambien es bien venida..

Gracias x la ayudita...
  #8 (permalink)  
Antiguo 24/10/2007, 08:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Llenar un treeview desde una tabla en SQL

Hola miguelillo2 gracias ya me salio el arbol e ir desplegando los j}hijos al señalar un nodo padre.... ahora tengo un pequeñooo problema más, poer medio de un boton de cargar arbol yo ocargo solo los nodos padres pero estos nacen de un nodo raiz "Catalogo", pero si yo señalo este nodo entra al bucle del afterselect lo cual me da un error porque este elemento no pertenece a la base.... es solo para indicar d q se trata el arbol....

COmo podria hacer para q si yo señale ese nodo(nodo raiz) no sea tomado en cuenta por el afterselect y no me despliegue el error. dentro de mi datareader que recorre los campos de mi tabla..

Espero tu sugerencia para que me brindes esta ayuda..
Gracias
  #9 (permalink)  
Antiguo 02/09/2010, 06:18
 
Fecha de Ingreso: diciembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Re: Llenar un treeview desde una tabla en SQL

Cita:
Iniciado por navileben Ver Mensaje
Hola miguelillo2 gracias ya me salio el arbol e ir desplegando los j}hijos al señalar un nodo padre.... ahora tengo un pequeñooo problema más, poer medio de un boton de cargar arbol yo ocargo solo los nodos padres pero estos nacen de un nodo raiz "Catalogo", pero si yo señalo este nodo entra al bucle del afterselect lo cual me da un error porque este elemento no pertenece a la base.... es solo para indicar d q se trata el arbol....

COmo podria hacer para q si yo señale ese nodo(nodo raiz) no sea tomado en cuenta por el afterselect y no me despliegue el error. dentro de mi datareader que recorre los campos de mi tabla..

Espero tu sugerencia para que me brindes esta ayuda..
Gracias
escribe la siguiente linea:
on error resume next

espero te sirva
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:51.