
27/03/2007, 11:44
|
| | Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 19 años, 5 meses Puntos: 0 | |
Re: Treeview Hola Marko!!!
No se si estas utilizando el control treeview que trae el vs.net 2005. O alguno que adquiriste.---
Hace dos años utilice el vb.net 2003 para un proyecto de escuela y me baje el webcontrol treeview desde el msdn y lo manejaba de esta forma:
Código:
Imports System.Data.SqlClient
Imports Microsoft.Web.UI.WebControls
Public Class WebForm1
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
'crear la cadena de conexion a la base de datos Grupos, con el usuario sa sin contraseña
Dim strConn As String = "server=.;database=Grupos;uid=sa;pwd=;"
'crear el objeto de conexion
Dim objConn As New SqlConnection(strConn)
'crear el objeto dataset para almacenar temporalmente los datos de la bd
Dim objDS As New DataSet
'crear el adaptador para que sea el que interprete entre la cadena de conexion y el dataset
'se crea un adaptador para cada tabla
Dim daraiz As New SqlDataAdapter("SELECT nombre_raiz,id_raiz,id_texto FROM tab_raiz", objConn)
Dim dagrupo As New SqlDataAdapter("SELECT nombre_grupo,id_grupo,id_raiz,id_texto FROM tab_grupo", objConn)
Dim danodo As New SqlDataAdapter("SELECT nombre_nodo, id_nodo, id_grupo, id_texto FROM tab_nodo", objConn)
Dim dalibro As New SqlDataAdapter("SELECT nom_libro, id_libro, id_nodo, id_texto FROM tab_libro", objConn)
Dim datitulo As New SqlDataAdapter("SELECT nom_titulo, id_titulo, id_libro, id_texto FROM tab_titulo", objConn)
Dim daarticulo As New SqlDataAdapter("SELECT nombre_articulo, id_articulo, id_titulo,id_texto FROM tab_articulos", objConn)
Dim dasubarticulo As New SqlDataAdapter("SELECT nombre_subarticulo, id_subarticulo, id_articulo,id_texto FROM tab_subarticulos", objConn)
Dim daterminal As New SqlDataAdapter("SELECT nombre_terminal, id_terminal, id_subarticulo, id_texto FROM tab_terminal", objConn)
'se llenan el dataset atraves de c/u de los adaptadores
' creados anteriormente, tmb se le indica un indice, el cual no es necesariamente el nombre de la tabla a la cual se referencia
daraiz.Fill(objDS, "dttab_raiz")
dagrupo.Fill(objDS, "dttab_grupo")
danodo.Fill(objDS, "dttab_nodo")
dalibro.Fill(objDS, "dttab_libro")
datitulo.Fill(objDS, "dttab_titulo")
daarticulo.Fill(objDS, "dttab_articulos")
dasubarticulo.Fill(objDS, "dttab_subarticulos")
daterminal.Fill(objDS, "dttab_terminal")
' se cierra la conexion
objConn.Close()
'se crean las relaciones entre las tablas
'es decir entre la tabla que contiene al nodo padre y al hijo
objDS.Relations.Add("RaizToGrupo", _
objDS.Tables("dttab_raiz").Columns("id_raiz"), _
objDS.Tables("dttab_grupo").Columns("id_raiz"))
objDS.Relations.Add("GrupoToNodo", _
objDS.Tables("dttab_grupo").Columns("id_grupo"), _
objDS.Tables("dttab_nodo").Columns("id_grupo"))
objDS.Relations.Add("NodoToLibro", _
objDS.Tables("dttab_nodo").Columns("id_nodo"), _
objDS.Tables("dttab_libro").Columns("id_nodo"))
objDS.Relations.Add("LibroToTitulo", _
objDS.Tables("dttab_libro").Columns("id_libro"), _
objDS.Tables("dttab_titulo").Columns("id_libro"))
objDS.Relations.Add("TituloToArticulo", _
objDS.Tables("dttab_titulo").Columns("id_titulo"), _
objDS.Tables("dttab_articulos").Columns("id_titulo"))
objDS.Relations.Add("ArticuloToSubarticulo", _
objDS.Tables("dttab_articulos").Columns("id_articulo"), _
objDS.Tables("dttab_subarticulos").Columns("id_articulo"))
objDS.Relations.Add("SubarticuloToTerminal", _
objDS.Tables("dttab_subarticulos").Columns("id_subarticulo"), _
objDS.Tables("dttab_terminal").Columns("id_subarticulo"))
'se declaran las variables de tipo treenode para cada una de las relaciones
Dim idtabla, nodetexto, nodeidtexto, noderaiz, nodegrupo, nodenodo, nodelibro, nodetitulo, nodearticulo, nodesubarticulo, nodeterminal As TreeNode
'se dclaran variables de tipo datarow, las cuales nos sirven para hacer el llenado de los nodos hijos al padre
'se declaran tantas variables como tablas que usaremos, en nuestro caso son 7
Dim rowidtexto, rowraiz, rowgrupo, rownodo, rowlibro, rowtitulo, rowarticulo, rowsubarticulo, rowterminal As DataRow
'se hace el llenado de el treeview desde la bd de sql atraves de las relaciones previamente establecidas
'esto se logra atraves de ciclos for.
'El numero de for = a numero de tablas
For Each rowraiz In objDS.Tables("dttab_raiz").Rows
noderaiz = New TreeNode
nodeidtexto = New TreeNode
noderaiz.Text = rowraiz("nombre_raiz")
noderaiz.ID = rowraiz("id_raiz")
nodeidtexto.ID = rowraiz("id_texto")
nodeidtexto.Target = "doc"
If nodeidtexto.ID <> 10000 Then
noderaiz.NavigateUrl = "http://192.100.1.8/treeviewenbd/contenido2.aspx?id=" + nodeidtexto.ID
End If
'noderaiz.ID = 2 Then
'noderaiz.NavigateUrl = "http://192.100.1.8/principal/SECCIONES O ARTICULOS.aspx"
TreeView1.Nodes.Add(noderaiz)
For Each rowgrupo In rowraiz.GetChildRows("RaizToGrupo")
nodegrupo = New TreeNode
nodeidtexto = New TreeNode
nodegrupo.Text = rowgrupo("nombre_grupo")
nodegrupo.ID = rowgrupo("id_grupo")
nodeidtexto.ID = rowgrupo("id_texto")
noderaiz.Nodes.Add(nodegrupo)
If nodeidtexto.ID <> 10000 Then
nodegrupo.NavigateUrl = "http://192.100.1.8/treeviewenbd/contenido2.aspx?id=" + nodeidtexto.ID
End If
For Each rownodo In rowgrupo.GetChildRows("GrupoToNodo")
nodenodo = New TreeNode
nodeidtexto = New TreeNode
nodenodo.Text = rownodo("nombre_nodo")
nodenodo.ID = rownodo("id_nodo")
nodeidtexto.ID = rownodo("id_texto")
nodegrupo.Nodes.Add(nodenodo)
If nodeidtexto.ID <> 10000 Then
nodenodo.NavigateUrl = "http://192.100.1.8/treeviewenbd/contenido2.aspx?id=" + nodeidtexto.ID
End If
For Each rowlibro In rownodo.GetChildRows("NodoToLibro")
nodelibro = New TreeNode
nodeidtexto = New TreeNode
nodelibro.Text = rowlibro("nom_libro")
nodelibro.ID = rowlibro("id_libro")
nodeidtexto.ID = rowlibro("id_texto")
nodenodo.Nodes.Add(nodelibro)
If nodeidtexto.ID <> 10000 Then
nodelibro.NavigateUrl = "http://192.100.1.8/treeviewenbd/contenido2.aspx?id=" + nodeidtexto.ID
End If
For Each rowtitulo In rowlibro.GetChildRows("LibroToTitulo")
nodetitulo = New TreeNode
nodeidtexto = New TreeNode
nodetitulo.Text = rowtitulo("nom_titulo")
nodetitulo.ID = rowtitulo("id_titulo")
nodeidtexto.ID = rowtitulo("id_texto")
nodelibro.Nodes.Add(nodetitulo)
If nodeidtexto.ID <> 10000 Then
nodetitulo.NavigateUrl = "http://192.100.1.8/treeviewenbd/contenido2.aspx?id=" + nodeidtexto.ID
End If
End Sub
End Class
Ahora manejo un treeview que distribuye una compañia de nombre softcomplex y es mas sencillo que el controweb treeview que manejaba anteriormente; aunque he leido que el nuevo treeview que viene en el vs.net 2005 es mas versatil.------
Espero y te sirva el ejemplo de codigo que te puse(por problema de espacio no puse todo).--- Y suerte.---
Bitss---Miguel--in--- |