Foro

Capturar clic en en un TreePanel y realizar petición AJAX

0
Hola amigos, primeramente permitame saludarlos y felicitarlos por el trabajo que vienen haciendo. bueno soy nuevo en el foro y tambin con ExtJs. el cual lo he estado aprendiendo viendo los videos de esta página. Ahora les cuento mi problema, los que deseo hacer es que cuando el usuario pulse click sobre los nodos hojas de un treePanel, me capture el href de cada nodo, envie una petición AJAX a esa url y mostrar los resultados en otro panel de la página. Mi problema específicamente radica en el envio de la petición AJAX, lo que hago es esto:
mainMenu.on('click', function (node) {
			if (!node.hasChildNodes()) {
				//Ahora hacemos la peticion ajax
                                var ruta = node.href;
                                Ext.Ajax.request({
                                    url : ruta,
                                    method : 'GET',
                                    onsuccess : function () {
                                        .....
                                    }
                                });
			}
		});
con eso capturo el click en los nodos Hojas del tree (mainMenu). ahora cómo puedo detener la accion por defecto del click ya que si no lo hago se recarga la página a la nueva url especificada por href del nodo. si fuese un link "normal" lo haria con event.stopEvent(); pero aca no puedo acceder al objeto event. Porfavor, alguien me podria decir cómo hacer eso???
0
quieres mostrar el resultado en una zona de tu misma pagina, en una zona de otra pagina, o en otra pagina?
0
En la misma pagina, en otro panel. Osea lo que stoy haciendo es un border layout, donde el tree va el parte izquierda y el deseo que los contenidos carguen en el panel del centro.
0
imagino que los contenidos los quieres cargar por ejemplo dentro de un grilla, porque si lo que deseas es cargar otra pagina en el centro es sencillo, si lo que deseas es que se carguen datos nuevos, por ejemplo en la grilla ya definida, podrias hacerlo cargando el store de esa grilla no necesitas el ext.ajax, algo asi:
st = Ext.getCmp('id_de_mi_grilla').getStore();
st.baseParams['algun_parametro_que_quieras _pasar'] = valor_de_parametro;
st.load();
y en tu pagina php enlazada al store original capturar el parámetro de consulta si esto no te sirve, especificame lo mejor que puedas lo que deseas hacer a ver si puedo echarte una manito
0
Gracias por tus respuestas tokkaido, pero mi problema era deterner la acción por defecto del click. ya que no sabia que el objeto Event me venia como segundo parámetro al configurar el listener
tree.on('click', function (node, e) {
    ...
});
Ahora me ocurre otro problema como podria mostrar una imagen mientras esta ejecutandose la petición AJAX. porque he visto que se cuenta con la opcion success pero no loading por ejemplo (Como lo hago en Prototype).
0
podrias usar una mascara, tipo:
mascara = new Ext.LoadMask(Ext.getBody(),{
     msg : 'cargando....'
});
mascara.show();
antes de tu peticion en ajax y en el success colocas el
mascara.hide();
o bien asi:
Ext.getCmp('id_de_tu_componente').getEl().mask('Loading....', 'x-mask-loading');
Ext.getCmp('id_de_tu_componente').getEl().unmask();
0
Ok, gracias amigo probaré lo que me dices
0
Hola amigo, estuve trabajando con lo que me habias sugerido y me ha ido bien, hasta que me encontre con un problema. Cuando en un formulario tengo campos del tipo SELECT, al aplicar la máscara me los quita del formulario. Alguien me sugieren algo para poder evitar eso.
0
cuando dices un campo tipo SELECT te refieres a un componente COMBO? lo unico se me opcurre que podria estar provocando ese comportamiento serian id's repetidos o en conflicto con otros componentes, tambien me han pasado comportamientos extraños cuando he usado algunas propeidades bajo "defaults". asegurate de probar tu aplicacion en distintos navegadores, a veces te da algunas luces sobre errores

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.