Una de TreeViews/TreeNodes (Esconder elementos)

14/07/2004 - 09:43 por Oriol | Informe spam
Hola a todos,

Estoy trabajando en un proyecto WinForm en C# donde tengo un TreeView con
los clientes de la empresa, y dentro de cada nodo de la empresa cuelgan
varios nodos mas, con nodos mas especificos.

P.Ej:
+ Nombre Empresa
|-- Informacion General
|-- Centros de Trabajo
|-- Trabajadores
|-- Informes
etc...

Mi problema viene ( o puede ser causa de que no lleno bien el Treeview)
cuando quiero recuperar informacion del cliente en el evento AfterSelect, ya
que lo unico que he conseguido recuperar es el nombre del nodo, y quisiera
recuperar el ID del cliente. He provado de crear un nuevo nodo con el ID del
cliente, y puedo recuperarlo, pero en este caso me aparece coo un nodo mas
en el arbol, cosa que no quiero.

Os dejo el codigo donde creo los nodos, a ver si podeis ayudarme en el caso
que rellene mal los nodos, porque lo de esconder el nodo ID no lo he
conseguido tampoco.

foreach(Cliente ClienteArbol in arData)

{

tv.Nodes.Add(new TreeNode(ClienteArbol.NombreEmpresa19, 19));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode(ClienteArbol.IdCliente));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new TreeNode("Información
del Cliente", 15, 15));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new TreeNode("Centros de
Trabajo", 12, 12));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new TreeNode("Informes", 1,
1));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode("Presupuestos", 2, 2));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode("Trabajadores", 7, 7));

}

Como podeis ver, aqui pongo el nodo[0]=ID para poder recuperarlo, pero no
puedo ocultarlo en el arbol.

Me podeis dar un cable... estoy perdido!

Gracias a todos,
Un saludo.
Oriol.
 

Leer las respuestas

#1 Alejandro Perez
14/07/2004 - 16:28 | Informe spam
Hola de nuevo Oriol :p

Se me ocurre que puedes guardar el ID del Cliente en el
Tag del Nodo. Algo como esto:

foreach(Cliente ClienteArbol in arData)
{
tv.Nodes.Add(new TreeNode(ClienteArbol.NombreEmpresa,19,
19));

tv.Nodes[arData.IndexOf
(ClienteArbol)].Tag=ClienteArbol.IdCliente;

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode("Información
del Cliente", 15, 15));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode("Centros de
Trabajo", 12, 12));
.
.
.
}

Asi vas a tener el ID del cliente en cada nodo Padre..
luego en el AfterSelect del TreeView almacenas el ID del
Cliente donde la necesites

private void tv_AfterSelect(object sender,
System.Windows.Forms.TreeViewEventArgs e)
{
try
{
MessageBox.Show(e.Node.Tag.ToString());
}
catch
{}
}

Cuentame si te sirve...

Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela


Hola a todos,

Estoy trabajando en un proyecto WinForm en C# donde


tengo un TreeView con
los clientes de la empresa, y dentro de cada nodo de la


empresa cuelgan
varios nodos mas, con nodos mas especificos.

P.Ej:
+ Nombre Empresa
|-- Informacion General
|-- Centros de Trabajo
|-- Trabajadores
|-- Informes
etc...

Mi problema viene ( o puede ser causa de que no lleno


bien el Treeview)
cuando quiero recuperar informacion del cliente en el


evento AfterSelect, ya
que lo unico que he conseguido recuperar es el nombre


del nodo, y quisiera
recuperar el ID del cliente. He provado de crear un


nuevo nodo con el ID del
cliente, y puedo recuperarlo, pero en este caso me


aparece coo un nodo mas
en el arbol, cosa que no quiero.

Os dejo el codigo donde creo los nodos, a ver si podeis


ayudarme en el caso
que rellene mal los nodos, porque lo de esconder el nodo


ID no lo he
conseguido tampoco.

foreach(Cliente ClienteArbol in arData)

{

tv.Nodes.Add(new TreeNode(ClienteArbol.NombreEmpresa19,


19));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode(ClienteArbol.IdCliente));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new


TreeNode("Información
del Cliente", 15, 15));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new


TreeNode("Centros de
Trabajo", 12, 12));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new


TreeNode("Informes", 1,
1));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode("Presupuestos", 2, 2));

tv.Nodes[arData.IndexOf(ClienteArbol)].Nodes.Add(new
TreeNode("Trabajadores", 7, 7));

}

Como podeis ver, aqui pongo el nodo[0]=ID para poder


recuperarlo, pero no
puedo ocultarlo en el arbol.

Me podeis dar un cable... estoy perdido!

Gracias a todos,
Un saludo.
Oriol.




.

Preguntas similares