Como acceder a mis elementos
Hola, estoy creando una aplicacion en extjs y tengo una duda, tengo una funcion init en la cual declaro todos mis componentes como paneles, ventanas, etc..., tambien tengo un formulario el cual aparece cuando presiono un boton. Dicho formulario tiene un boton llamado aceptar, y siguiendo los excelentes tutoriales de esta pagina hago el submit en otra funcion, llamada sendData, en la cual ya no puedo acceder a mi ventana, queriendola esconder de esta manera: ventana.hide(), esta mas o menos de esta manera
Ext.ns('com.diti.gvcuenta');
Ext.BLANK_IMAGE_URL='../ext-2.3.0/resources/images/default/s.gif';
com.diti.gvcuenta.Panel = {
init: function() {
this.form = new Ext.form.FormPanel({
url: 'insertar.jsp',
items: [tcuenta,tcodigo,tobjeto,tdescripcion,tnivel,checkboxes,tpredec,ttipgas,tnatope]
});
var ventana = new Ext.Window({
width: 400,
height: 300,
modal: false,
closable: false,
items: this.form,
itemId: 'mivent',
buttonAlign: 'center',
buttons: [{text:'Aceptar',handler:this.sendData,scope:this},cancelar]
});
},//fin de la funcion init
sendData: function(b) {
this.form.getForm().submit();
ventana.hide();//Aqui es donde no me funciona
}
Es decir, quiero cerar mi ventana al presionar el boton aceptar, despues de que se envian los datos del formulario.
He leido algo sobre el metodo up, el cual supuestamente puede regresar un elemento padre o un elemento hijo, trate de hacerlo de la siguiente manera:
sendData: function(b) {
this.form.getForm().submit();
var ventana b.up("#idventana");
ventana.hide();
}
pero no me ha funcionado.
Agradezco de antemano cualquier ayuda que me puedan brindar, ya que soy algo nuevo en este framework, y espero haberme explicado bien.
Saludos y gracias otra vez
Estas seguro que estas usando la version 3? porque esta linea me parece mas de 4:
var ventana b.up("#idventana");
en todo caso hay varias formas de hacerlo, por ejemplo puedes usar el itemId que le diste a tu ventana y acceder a ella asi:
Ext.Container.getComponent("mivent").hide();
o darle un id a tu ventana:
var ventana = new Ext.Window({
width: 400,
height: 300,
modal: false,
closable: false,
items: this.form,
itemId: 'mivent',
buttonAlign: 'center',
buttons: [{text:'Aceptar',handler:this.sendData,scope:this},cancelar] ,
id :"miventana"
});
y usar :
Ext.getCmp("miventana").hide();
te aconsejo en todo caso que ocultes la ventana en los métodos success del submit, porque como es una llamada asincronica la que hace puede producirse un error o validación por el lado del servidor que encontrará tu ventana oculta, algo así:
sendData: function(b) {
this.form.getForm().submit({
success: function(form, action){
Ext.Container.getComponent("mivent").hide();
},
failure: function(form, action){
alert("error");
}
});
}
espero te ayude en algo
¿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.