AJAX - TreeView y AJAX

 
Vista:
sin imagen de perfil

TreeView y AJAX

Publicado por Leonardo (4 intervenciones) el 29/01/2007 22:12:51
Buenas Tardes a Todos.

Estoy utilizando el treeview incluido en los Microsoft IE webcontrols para ASP.NET 1.1 Cada nodo del arbol tiene habilitado su checkbox para permitir la selección multiple de nodos.

La idea de la página es que el usuario seleccione todos los nodos del arbol que desee utilizar y mediante un botón pasar las descripciones de los nodos seleccionados a un LISTBOX. Esto lo estoy haciendo con un botón de ASP.NET, pero al dar click en el boton me hace el refrescado de la página y por consiguiente un "parpadeo".

He leido que con AJAX puedo hacer esto mismo sin necesidad de hacer un postback al servidor, pero no tengo idea de como puedo hacerlo. Quisiera que alguien me pueda ayudar o por favor indiquenme donde puedo documentarme sobre AJAX para tratar de implementarlo. Es urgente.

Espero que me haya hecho entender, pero si algo no quedo claro por favor escribanme para darles una explicación de la solución que tengo y lo que pretendo hacer.

De antemano muchas gracias.

Leo ([email protected])
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:TreeView y AJAX

Publicado por Edinho (1 intervención) el 20/10/2008 16:21:54
Has conseguido hacerlo?

Yo tengo el mismo problema.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:TreeView y AJAX

Publicado por Leonardo (4 intervenciones) el 24/10/2008 16:47:26
Logré hacerlo pero con javascript puro, la solución puede que no sea la más óptima, pero en vista de que no encontré alguna otra forma de hacerlo comparto mi código:

Lo que hago es construir una cadena que contiene todos los nodos seleccionados por el usuario del lado del cliente y la almaceno en un campo oculto. Al dar clic en un botón desencadeno un postback y del lado del servidor (C#) recupero ese archivo oculto y leo la información.

Lo primero que tienes que hacer es poner la propiedad AutoPostBack de tu TreeView en false, para que no envíe refrescado cada que se seleccione un
CheckBox...

Ahora bien: en mi caso mi Arbol consta de un único Nodo Raiz y varios nodos Hijos... el Nodo padre no tiene CheckBox y sólo se pueden seleccionar los nodos hijos... Algo como esto:

NodoRaiz
|..........|X| NodoHijo1
|..........| | NodoHijo2
|..........|X| NodoHijo3
|..........|X| NodoHijo4
|..........| | NodoHijo5

Yo creé la siguiente función de Javascript, donde le envío como parámetros el nombre de mi arbol y el nombre del campo hidden donde voy a almacenar la información:

function RecorrerArbol_2Niveles( nombre_arbol, campo_oculto )
{
var arbol = document.getElementById(nombre_arbol);
if (arbol != null)
{
var nodo_raiz = arbol.getTreeNode("0");
var nodos_hijos = nodo_raiz.getChildren();
var tempo = "";
/*para obtener los nodos del árbol seleccionados*/
for (var i = 0; i < nodos_hijos.length; i++)
{
if (nodos_hijos[i].getAttribute("checked") == true)
{
tempo = tempo + "0." + i + "|";
}
}
/*quita el último | concatenado*/
tempo = tempo.substring(0,tempo.length-1);
document.getElementById(campo_oculto).setAttribute("value", tempo);
}
}

En mi Página C# en el Page_Load le agrego un atributo al TreeView:

this.TV.Attributes.Add("oncheck", "javascript: if (this.clickedNodeIndex != null){RecorrerArbol_2Niveles('TV', 'hiArbol');}");

De esta manera, cada que se da un clic en alguno de los checkbox del arbol me calcula una nueva cadena. Para el ejemplo quedaría algo como esto:

0.0|0.2|0.3

Esto me indica que los nodos 1, 3 y 4 están checados (los indices comienzan desde el cero).

Finalmente en el evento Clic del Botón que desencadena mi PostBack recupero la cadena oculta del lado del servidor (C#) haciendo esto:

HtmlInputHidden Arbol = (HtmlInputHidden)(this.Page.FindControl("hiArbol"));

La variable Arbol contiene la cadena con los nodos seleccionados en el cliente, y por tanto ya puedes implementar los procedimientos que necesites.

La variable hiArbol está declarada en mi página HTML como sigue:

<input id="hiArbol" type="hidden" name="hiArbol" runat="server">

Saludos y espero que te sirva el código.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:TreeView y AJAX

Publicado por Juan Ricardo Gonzalez S (1 intervención) el 30/11/2008 00:47:23
que mas leonardo, para lo que necesitas, debes buscar espscificamente
lo siguinete
de ajax extender el script manager y un updatepanel,

meter tu diseño en el update panel y definirle al update panel un trigger asyncpostback,
sobre el evento click del boton que va a enviar la info del arbol..

epero que este concepto te sea de utilidad,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar