Nodos padres de un treeview

21/11/2006 - 15:11 por Juan Diego Bueno Prieto | Informe spam
Hola gente:

Tengo un treeview con tres niveles que relleno dinámicamente tomando datos
de unas tablas relacionadas. Con el elemento de tercer nivel que selecciono
de este treeview relleno tres labels con cada uno de los elementos de cada
nivel. El treeview permanece oculto cuando se ha seleccionado el elemento.

Pero ahora me encuentro en la situación contraria, es decir, relleno el
label de tercer nivel con un texto tomado directamente de la tabla del
tercer nivel, pero me gustaría obtener los dos elementos padre de este sin
tener que consultar las otras dos tablas en la BD.

He probado con el método find de la colección nodes del treeview, pero
obviamente solo me busca en el primer nivel. Para hacer referencia a
elementos del tercer nivel debo hacer algo asi como
treeview1.nodes[i].nodes[j].nodes[elementodetercernivel].

En resumen, quiero obtener los dos nodos padre del árbol comenzando desde
abajo (el tercer nivel). Eso es fácil en un nodo seleccionado
(selectednode), pero yo quiero hacerlo dandole el texto del nodo. No se si
me explico... Si no, siempre me quedaría obtener directamente de la tabla
los dos elementos superiores, pero quería evitar esto, ya que no veo
necesario hacer más consultas si tengo los datos ya cargados.

Gracias

Preguntas similare

Leer las respuestas

#1 [Juanjo]
21/11/2006 - 16:24 | Informe spam
Hola:

Los nodos tienen una propiedad parent que te devuelve el nodo padre de
un nodo dado,
asi que si puedes hacer algo asi como:

TreeNode nodo= this.tutreeview.SelectedNode;
TreeNode padre= nodo.parent;
TreeNode abuelo=nodo.parent.parent;
etc...

Con esto consultarias los nodos "padres" de un nodo seleccionado de un
TreeView.

Espero te sirva

"Juan Diego Bueno Prieto" escribió en el mensaje
news:
Hola gente:

Tengo un treeview con tres niveles que relleno dinámicamente tomando datos
de unas tablas relacionadas. Con el elemento de tercer nivel que
selecciono de este treeview relleno tres labels con cada uno de los
elementos de cada nivel. El treeview permanece oculto cuando se ha
seleccionado el elemento.

Pero ahora me encuentro en la situación contraria, es decir, relleno el
label de tercer nivel con un texto tomado directamente de la tabla del
tercer nivel, pero me gustaría obtener los dos elementos padre de este sin
tener que consultar las otras dos tablas en la BD.

He probado con el método find de la colección nodes del treeview, pero
obviamente solo me busca en el primer nivel. Para hacer referencia a
elementos del tercer nivel debo hacer algo asi como
treeview1.nodes[i].nodes[j].nodes[elementodetercernivel].

En resumen, quiero obtener los dos nodos padre del árbol comenzando desde
abajo (el tercer nivel). Eso es fácil en un nodo seleccionado
(selectednode), pero yo quiero hacerlo dandole el texto del nodo. No se si
me explico... Si no, siempre me quedaría obtener directamente de la tabla
los dos elementos superiores, pero quería evitar esto, ya que no veo
necesario hacer más consultas si tengo los datos ya cargados.

Gracias



Respuesta Responder a este mensaje
#2 Juan Diego Bueno Prieto
21/11/2006 - 16:37 | Informe spam
Si, Juanjo, si lees el post verás que conozco la existencia de esa propiedad
y la uso para rellenar el resto de labels... pero solo la puedo usar con un
selectednode. El problema es que yo ahora no tengo ningun nodo seleccionado,
simplemente quiero, a partir del texto del nodo, obtener sus padres. El
problema es que el nodo está en un nivel 3 y desconozco los índices de su
nodo padre de nivel 2 y del 1.

Por ejemplo, se que el texto del nodo de nivel 3 es "MMG". Si pido
mitreeview.Nodes["MMG"].parent porque no es un nodo de primer nivel. Claro,
la forma de hacer referencia a un nodo de ese nivel (que no esté
seleccionado) desde el treeview es recorrerlo de arriba a abajo. Ese es el
problema que tengo, y si hay una solución fácil os lo agradecería

Gracias de todas maneras



"[Juanjo]" escribió en el mensaje
news:%
Hola:

Los nodos tienen una propiedad parent que te devuelve el nodo padre de
un nodo dado,
asi que si puedes hacer algo asi como:

TreeNode nodo= this.tutreeview.SelectedNode;
TreeNode padre= nodo.parent;
TreeNode abuelo=nodo.parent.parent;
etc...

Con esto consultarias los nodos "padres" de un nodo seleccionado de un
TreeView.

Espero te sirva

"Juan Diego Bueno Prieto" escribió en el
mensaje news:
Hola gente:

Tengo un treeview con tres niveles que relleno dinámicamente tomando
datos de unas tablas relacionadas. Con el elemento de tercer nivel que
selecciono de este treeview relleno tres labels con cada uno de los
elementos de cada nivel. El treeview permanece oculto cuando se ha
seleccionado el elemento.

Pero ahora me encuentro en la situación contraria, es decir, relleno el
label de tercer nivel con un texto tomado directamente de la tabla del
tercer nivel, pero me gustaría obtener los dos elementos padre de este
sin tener que consultar las otras dos tablas en la BD.

He probado con el método find de la colección nodes del treeview, pero
obviamente solo me busca en el primer nivel. Para hacer referencia a
elementos del tercer nivel debo hacer algo asi como
treeview1.nodes[i].nodes[j].nodes[elementodetercernivel].

En resumen, quiero obtener los dos nodos padre del árbol comenzando desde
abajo (el tercer nivel). Eso es fácil en un nodo seleccionado
(selectednode), pero yo quiero hacerlo dandole el texto del nodo. No se
si me explico... Si no, siempre me quedaría obtener directamente de la
tabla los dos elementos superiores, pero quería evitar esto, ya que no
veo necesario hacer más consultas si tengo los datos ya cargados.

Gracias







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida