Principales respuestas
Llenar un Tree View en Visual Studio

Pregunta
-
Hola a tod@, quisiera que me ayuden con lo siguiente: Tengo una consulta en sql server la cual quisiera pasar la información a un tree view de la siguiente manera
1) que mi nodo principal sean los cliente
2) los números de factura de ese cliente sean el nodo hijo
ejemplo:
Jose David
4521888
4548888
Ricardo Juares
4854555
7845888
84857965 etc...
mi tabla es la siguiente:
si se fijan los clientes se pueden repetir así que en el tree view solo quiero que aparezca solo una vez y las facturas las que tengas
este es el código que tengo hasta ahora:
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click Try Me.TreeView1.Nodes.Clear() Using cnn As New SqlConnection(My.Settings.AlmacenGlovalConnectionString) cnn.Open() Dim cmd As New SqlCommand("SELECT * FROM DBO.Llenar_Tree_View", cnn) cmd.CommandType = CommandType.Text Dim dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim NODE As TreeNode = New TreeNode(dr("Cliente").ToString()) NODE.Nodes.Add(dr("Factura").ToString()) Me.TreeView1.Nodes.Add(NODE) End While End Using Catch ex As Exception FormMsgBoxError.Show(ex.Message, "Se produjo un error.") End Try End Sub
Y este es el resultado:
A como pueden ver no he podido agrupar los números de factura a un solo cliente, claro las que les corresponde,
cualquier ayuda les agradecería ...
Muchas Gracias de antemanos.
Respuestas
-
Hola:
Fijate que cada vez que lees un registro, haces un New TreeNode("cliente"), lo que tienes que hacer es comprobar si existe el NODE del Cliente y actuar en consecuencia:
While dr.Read() Dim NODE As TreeNode '= New TreeNode(dr("Cliente").ToString()) Dim IDCliente = "Cliente" ' Pon aquí el campo que es la ID de CLIENTE ' En vez de CREAR siempre el NODO, comprobamos si existe If TreView1.Nodes.ContainsKey(dr(IDCliente).ToString()) Then ' Si existe, lo usamos. NODE = TreeView1.Nodes(dr(IDCliente).ToString()) Else ' Si no existe, lo creamos y lo añadimos. NODE = New TreeNode(dr("Cliente").ToString()) ' Importante, la 'key' es la propiedad .Name NODE.Name = dr(IDCliente).ToString() TreeView1.Nodes.Add(NODE) End If ' Ya sea nuevo o existente, añadimos la factura. NODE.Nodes.Add(dr("Factura").ToString()) End While
Espero que te sirva
Un saludo
- Editado LG DES miércoles, 31 de julio de 2019 6:26
- Marcado como respuesta Reynaldo Sanchez miércoles, 31 de julio de 2019 15:49
Todas las respuestas
-
Hola:
Fijate que cada vez que lees un registro, haces un New TreeNode("cliente"), lo que tienes que hacer es comprobar si existe el NODE del Cliente y actuar en consecuencia:
While dr.Read() Dim NODE As TreeNode '= New TreeNode(dr("Cliente").ToString()) Dim IDCliente = "Cliente" ' Pon aquí el campo que es la ID de CLIENTE ' En vez de CREAR siempre el NODO, comprobamos si existe If TreView1.Nodes.ContainsKey(dr(IDCliente).ToString()) Then ' Si existe, lo usamos. NODE = TreeView1.Nodes(dr(IDCliente).ToString()) Else ' Si no existe, lo creamos y lo añadimos. NODE = New TreeNode(dr("Cliente").ToString()) ' Importante, la 'key' es la propiedad .Name NODE.Name = dr(IDCliente).ToString() TreeView1.Nodes.Add(NODE) End If ' Ya sea nuevo o existente, añadimos la factura. NODE.Nodes.Add(dr("Factura").ToString()) End While
Espero que te sirva
Un saludo
- Editado LG DES miércoles, 31 de julio de 2019 6:26
- Marcado como respuesta Reynaldo Sanchez miércoles, 31 de julio de 2019 15:49
-