
PRESENTAR NODOS PRINCIPALES EN UN TREEVIEW
Publicado por Edgar (26 intervenciones) el 18/02/2008 23:33:04
Estimados amigos del Foro, desde ya muchas gracias por su valiosa ayuda, tengo una consulta que realizarles.....
PREGUNTA.- Tengo un Treeview que trae datos de una tabla utilizando un dataset de forma recursica..... Bien el treeview al buscar la empresa se presenta en la pantalla pero como es un plan de cuentas contables no alcanza la pantalla si solo se presentan de la siguinete forma:
1.
1.1.
1.1.1.
1.1.1.01.
1.1.1.01.01.
1.1.1.01.01.001
1.1.1.01.01.002
1.1.1.01.01.003
1.1.1.01.01.004
1.1.1.01.01.005
1.1.1.01.01.006
1.1.1.01.01.007
1.1.1.01.01.008
1.1.1.01.01.009
1.1.1.01.02.
1.1.1.01.02.001
1.1.1.01.02.002
1.1.1.01.02.003
1.1.1.01.02.004
1.1.1.01.02.005
1.1.1.01.02.006
1.1.1.01.02.007
1.1.1.02.
1.1.1.02.01.
1.1.1.02.01.001
1.1.1.02.01.002
1.1.1.02.01.003
1.1.1.02.01.004
1.1.2.
1.1.2.01.
1.1.2.01.01.
1.1.2.01.01.001
1.1.2.01.01.003
1.1.2.01.01.004
1.1.2.01.01.005
1.1.2.01.01.009
1.1.2.01.02.
Nunca llega a presentarse todo el plan de cuentas..... mi consulta es como hago para que solo aparescan los nodos principales, es decir solo los nodos padres de esta manera
+1.
+2.
+3.
+4.
+5.
+6.
+7.
+8.
Para cuando de clcik en el + se abran los subnodos que contiene cada cuenta y asi estos contendran otras subcuentas
la programacion del treeview es la siguiente
Protected Sub fnCargarTreeView()
Dim obj As New Contabilidad.Negocio.Contabilidad.Negocio.ClsPlanNegocio()
dataSetPlan = obj.fnDatosNodo(idEmpresa)
trvPlan.Nodes.Clear()
CrearNodosDelPadre(0, Nothing)
trvPlan.ExpandAll()
End Sub
Private Sub CrearNodosDelPadre(ByVal indicePadre As String, ByVal nodePadre As TreeNode)
Dim dataViewHijos As DataView
' Crear un DataView con los Nodos que dependen del Nodo padre pasado como parámetro.
dataViewHijos = New DataView(dataSetPlan.Tables(0))
dataViewHijos.RowFilter = dataSetPlan.Tables(0).Columns("PLANCUENTA_MAYORIZA").ColumnName & " = '" & indicePadre.ToString & "'"
' Agregar al TreeView los nodos Hijos que se han obtenido en el DataView.
For Each dataRowCurrent As DataRowView In dataViewHijos
Dim nuevoNodo As New TreeNode
nuevoNodo.Text = dataRowCurrent("PLANCUENTA_NUMERO").ToString().Trim()
'nuevoNodo.ToolTip = dataRowCurrent("PLANCUENTA_NUMERO").ToString().Trim()
'nuevoNodo.Value = dataRowCurrent("PLANCUENTA_ID").ToString().Trim()
' si el parámetro nodoPadre es nulo es porque es la primera llamada, son los Nodos del primer nivel que no dependen de otro nodo.
If nodePadre Is Nothing Then
trvPlan.Nodes.Add(nuevoNodo)
Else
' se añade el nuevo nodo al nodo padre.
nodePadre.ChildNodes.Add(nuevoNodo)
End If
' Llamada recurrente al mismo método para agregar los Hijos del Nodo recién agregado.
'CrearNodosDelPadre(Int16.Parse(dataRowCurrent("PLANCUENTA_ID").ToString()), nuevoNodo)
CrearNodosDelPadre(dataRowCurrent("PLANCUENTA_NUMERO").ToString(), nuevoNodo)
Next
End Sub
PREGUNTA.- Tengo un Treeview que trae datos de una tabla utilizando un dataset de forma recursica..... Bien el treeview al buscar la empresa se presenta en la pantalla pero como es un plan de cuentas contables no alcanza la pantalla si solo se presentan de la siguinete forma:
1.
1.1.
1.1.1.
1.1.1.01.
1.1.1.01.01.
1.1.1.01.01.001
1.1.1.01.01.002
1.1.1.01.01.003
1.1.1.01.01.004
1.1.1.01.01.005
1.1.1.01.01.006
1.1.1.01.01.007
1.1.1.01.01.008
1.1.1.01.01.009
1.1.1.01.02.
1.1.1.01.02.001
1.1.1.01.02.002
1.1.1.01.02.003
1.1.1.01.02.004
1.1.1.01.02.005
1.1.1.01.02.006
1.1.1.01.02.007
1.1.1.02.
1.1.1.02.01.
1.1.1.02.01.001
1.1.1.02.01.002
1.1.1.02.01.003
1.1.1.02.01.004
1.1.2.
1.1.2.01.
1.1.2.01.01.
1.1.2.01.01.001
1.1.2.01.01.003
1.1.2.01.01.004
1.1.2.01.01.005
1.1.2.01.01.009
1.1.2.01.02.
Nunca llega a presentarse todo el plan de cuentas..... mi consulta es como hago para que solo aparescan los nodos principales, es decir solo los nodos padres de esta manera
+1.
+2.
+3.
+4.
+5.
+6.
+7.
+8.
Para cuando de clcik en el + se abran los subnodos que contiene cada cuenta y asi estos contendran otras subcuentas
la programacion del treeview es la siguiente
Protected Sub fnCargarTreeView()
Dim obj As New Contabilidad.Negocio.Contabilidad.Negocio.ClsPlanNegocio()
dataSetPlan = obj.fnDatosNodo(idEmpresa)
trvPlan.Nodes.Clear()
CrearNodosDelPadre(0, Nothing)
trvPlan.ExpandAll()
End Sub
Private Sub CrearNodosDelPadre(ByVal indicePadre As String, ByVal nodePadre As TreeNode)
Dim dataViewHijos As DataView
' Crear un DataView con los Nodos que dependen del Nodo padre pasado como parámetro.
dataViewHijos = New DataView(dataSetPlan.Tables(0))
dataViewHijos.RowFilter = dataSetPlan.Tables(0).Columns("PLANCUENTA_MAYORIZA").ColumnName & " = '" & indicePadre.ToString & "'"
' Agregar al TreeView los nodos Hijos que se han obtenido en el DataView.
For Each dataRowCurrent As DataRowView In dataViewHijos
Dim nuevoNodo As New TreeNode
nuevoNodo.Text = dataRowCurrent("PLANCUENTA_NUMERO").ToString().Trim()
'nuevoNodo.ToolTip = dataRowCurrent("PLANCUENTA_NUMERO").ToString().Trim()
'nuevoNodo.Value = dataRowCurrent("PLANCUENTA_ID").ToString().Trim()
' si el parámetro nodoPadre es nulo es porque es la primera llamada, son los Nodos del primer nivel que no dependen de otro nodo.
If nodePadre Is Nothing Then
trvPlan.Nodes.Add(nuevoNodo)
Else
' se añade el nuevo nodo al nodo padre.
nodePadre.ChildNodes.Add(nuevoNodo)
End If
' Llamada recurrente al mismo método para agregar los Hijos del Nodo recién agregado.
'CrearNodosDelPadre(Int16.Parse(dataRowCurrent("PLANCUENTA_ID").ToString()), nuevoNodo)
CrearNodosDelPadre(dataRowCurrent("PLANCUENTA_NUMERO").ToString(), nuevoNodo)
Next
End Sub
Valora esta pregunta


0