Llenar treeview desde una bd

En mi base de datos tengo los siguientes datos
tabla reportes
idreporte - nombrereporte
1 - reporte1
2 - reporte1/subreporte1
3 - reporte1/subreporte1/subsubreporte1
4 - reporte1/subreporte1/subsubreporte1/subsubsubreporte1
5 - reporte1/subreporte2
6 - reporte2
7 - reporte2/subreporte1
8 - reporte2/subreporte2
9 - reporte2/subreporte2/subsubreporte1
Con los datos del campo2 necesito que se muestre en el treeview de esta manera
resultado:
-Reporte1
         -Subreporte1
                          -Subsubreporte1
                                                  -Subsubsubreporte1
         -Subreporte2
-Reporte2
            -Subreporte1
            -Subreporte2
                               -Subsubreporte1
necesito la solución para implementarlo en mi proyecto.

1 Respuesta

Respuesta
1
Te dejo dos links los cuales podrás hacer lo que estás buscando:
Llenar un TreeView desde un DataSet en VB .NET:
http://www.elguille.info/colabora/NET2005/serge_llenar_un_treeview_dataset_vb.htm
TreeView: Armar la estructura de árbol usando los datos de dos tablas:
http://www.elguille.info/colabora/NET2005/creyes_EjemploTreeView.htm
Si tienes alguna duda me lo haces saber.
Gracias por los ejemplos. En mi caso no hace referencia a un identificador padre. Se me hace difícil hacer el algoritmo para que muestre los datos del campo "nombrereporte" en el treeview.
idreporte nombrereporte
1                   reporte1
2                   reporte1/subreporte1
3                   reporte1/subreporte1/subsubreporte1
4                   reporte1/subreporte1/subsubreporte1/subsubsubreporte1
5                   reporte1/subreporte2
6                   reporte2
7                   reporte2/subreporte1
8                   reporte2/subreporte2
9                   reporte2/subreporte2/subsubreporte1
Resultado:
-reporte1
               subreporte1
                                   subsubreporte1
                                                            subsubsubreporte1
               subreporte2
-reporte2
               subreporte1
               subreporte2
                                   subsubreporte1
Por favor ayúdame...
Para entenderte mejor, deberías mostrarme como haces el código anterior, por que así como me dices, me es difícil entender tu lógica de programación.
Me dices que quieres llenar el Treeview con una BD, por tanto hay que cargar esos datos en un objeto, en el ejemplo que te di era con un DataSet.
Muéstrame algo más de tu código para ayudarte.
Dim vcTablaAdministracionReporte as datatable
vcTablaAdministracionReporte = SIGG.DATA.cAdministracionReporte.mGetAllAdministracionReporte()
        If vcTablaAdministracionReporte Is Nothing Then
            jt.cMsgBox.mShowError(SIGG.DATA.cBase.pLastErrorString)
            Me.Close()
            Return
        End If
 dgv_Reportes.DataSource = vcTablaAdministracionReporte
-------------------------------------------------------------------------------------------------------
Public Shared Function mGetAllAdministracionReporte() As DataTable
                Return mRetriveData("SELECT intIDAdministracionReporte, " & _
                                    "intIDIdentificadorPadre, " & _
                                    "RTRIM(chrNombreReporte) AS chrNombreReporte" )                        
            End Function
--------------------------------------------------------------------------------------------------------
Protected Shared Function mRetriveData(ByVal pvSQL As String, ByVal pvConnectionOption As tgConnectionCloseAction) As DataTable
            Dim voData As DataTable = Nothing
            Dim voAdapter As OleDbDataAdapter
            If mConnectionOpen() Then
                Try
                    voData = New DataTable()
                    voAdapter = New OleDbDataAdapter(pvSQL, vcConnection)
                    voAdapter.SelectCommand.CommandType = CommandType.Text
                    voAdapter.Fill(voData)
                Catch voError As Exception
                    voData = Nothing
                    moSetLastError(voError)
                Finally
                    If pvConnectionOption = tgConnectionCloseAction.Close Then
                        mConnectionClose()
                    End If
                End Try
            End If
            Return voData
        End Function
Con ese código lleno la tabla vcTablaAdministracionReporte. El resultado de la consulta es:
Registros de la consulta
--------------------------------------------------------------------
intIDAdministracionReporte - chrNombreReporte
------------------------------------------------------------------
1 - reporte1
2                                        - reporte1/subreporte1
3                                        - reporte1/subreporte1/subsubreporte1
4                                        - reporte1/subreporte1/subsubreporte1/subsubsubreporte1
5                                        - reporte1/subreporte2
6                                        - reporte2
7                                        - reporte2/subreporte1
8                                        - reporte2/subreporte2
9                                        - reporte2/subreporte2/subsubreporte1
----------------------------------------------------------------------
Con esos datos quiero que se muestre en el treeview(CREAR UN ALGORITMO PARA QUE SE MUESTREN EN EL TREEVIEW CON LOS DATOS OBTENIDOS DE LA CONSULTA)
-reporte1
         -subreporte1
                          -subsubreporte1
                                                  -subsubsubreporte1
         -subreporte2
-reporte2
            -subreporte1
            -subreporte2
                               -subsubreporte1
Pues está claro, tienes una variable llamada VoData, que es del tipo DataTable, en el ejemplo primero que te puse tienes el código como trabajar con el objeto, aunque es un DataSet, pero prácticamente es lo mismo.
Te doy luces, mira, al llenar el DataTable o DataSet tienes los datos allí, es decir en el objeto, luego mira el código que está en el ejemplo que te di en primera oportunidad y verás que debes hacer para que esos datos se reflejen en el TreeView.
Lo que quiero que entiendas es que DataTable y DataSet son prácticamente lo mismo y en ese objeto en tu caso el VoData, tienes toda la información.
Te dejo dos páginas más que te darán clara idea de como trabajar con el TreeView:
Cómo usar el control Treeview
http://www.elguille.info/vb/ejemplos/treeview.htm
TreeView (Control, formularios Windows Forms)
http://msdn.microsoft.com/es-es/library/ch6etkw4(VS.85).aspx
Este último es documentación oficial de Microsoft.
Si aún tienes dudas me lo haces saber.
Ok, el problema es que se me hace difícil de llenar el treeview.
Se un poco más específico, ¿por qué se te hace difícil?
¿No tienes los conocimientos?
No tengo mucho conocimiento en el tema.
Entonces, ve avanzando en lo que yo te he dicho y a medida que te surjan dudas sobre algo me preguntas.
¿Cómo vas?, recuerda que si ya no me necesitas Valores mi ayuda y cierres la pregunta, esto libera capacidad para poder ayudar a más personas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas