Foro

Problema con el llenado de un formulario y combos sincroniza

0
Hola buen día, trataré de explicarme lo mejor que pueda. Tengo un grid, con un toolbar, en ella hay un botón que abre una ventana y carga un formulario extjs. Pongo el código de esta parte: //Esta parte es sólo el botón del toolbar
         tbar:[
         {
            id      : 'tb_detail',
            text    : 'Nueva Inscripción',
            tooltip : 'Detalle del registro',
            iconCls : 'detail',
            scope   : this,
            handler : function(){
                       this.loadProcess({
                                            url : '/uimqroo/codigos/alumnos/captura_administrador.php'
            }) }
         },'-',
//Aqui está la función
       if (this.grid.getSelectionModel().getSelections().length == 1 ){
            var params    = new Object();
            
            params.url    = o.url;
            params.width  = 800;
            params.height = 600;
            
            app.showMainWin(params);
            
       }else{
          Ext.MessageBox.alert('Error','Debes de seleccionar un registro');
       }
Al abrirse la ventana lleno todos los objetos del combo, sin embargo el problema que estoy teniendo son en unos combos sincronizados, ya que para llenarlos debo quitar la propiedad ID, sin embargo en ellos tengo agregado un listener que cuando se seleccione un elemento se recargue el store. Para seleccionar los combos dependientes la instrucción que uso, usa la propiedad ID. Los combos sincronizados son: País, Estado, Municipio, Localidad. Si cambia país, limpio los otros tres combos y recargo el store de Estado, Si cambia Estado, limpio los otros dos y recargo el Store de Municipio, y Si cambio Municipio, limpio localidad y Recargo su Store. Primero pondré la definición del combo países:
                                        xtype: 'combo',
                                        fieldLabel: 'País',
                                        anchor: '100%',
                                        name          : 'id_pais_nac',
                                        //id          : 'id_pais_nac',
                                        hiddenName    : 'id_pais_nac',
                                        store         : storePaises,
                                        displayField  : 'd_pais',
                                        valueField    : 'id_pais',
                                        triggerAction : 'all',
                                        emptyText     : 'Seleccione el país de Nac. del alumno...',
                                        selectOnFocus : true,
                                        allowBlank    : true,
                                        helpText      : 'País de Nacimiento del Alumno',
                                        editable      : false,                                        
                                        listeners     :
                                        {
                                            'select': function(cmb, rec, idx){
                                                var comboMuninicipio =Ext.getCmp('id_municipio_nac');
                                                var comboLocalidad   =Ext.getCmp('id_localidad_nac');
                                                comboMuninicipio.clearValue();
                                                comboMuninicipio.disable();
                                                comboLocalidad.clearValue();
                                                comboLocalidad.disable();
                                                //Validación para ver si es Mexico el pais seleccionado
                                                var cadena   = this.getValue();
                                                var vector   = cadena.split('*');
                                                if(vector['1']=='MX'){//Mexico
                                                  comboEstado.enable();
                                                }
                                            }
                                        }
                                      
                                     }
Para el llenado si el combo tiene habilitada la propiedad ID no se llena, tons lo que hago es quitársela, sin embargo si se lo quito, la parte del listener deja de funcionar. Al parecer la instrucción [b]Ext.getCmp[/b] hace uso de la propiedad ID //Aqui pongo el código para cuando lleno los combos al abrirse la página. Sólo pondré el de países, aunque los otros tres los hago igual
     var storePaises=new Ext.data.JsonStore({
        url:ruta+'ajax_cbo_paises.php',
        root: 'rows',
        totalProperty: 'total',
        fields: [
                {name:'id_pais', type: 'string', mapping:'id_pais'},
                {name:'d_pais',  type: 'string', mapping: 'd_pais'},
        ]
    });
     
    storePaises.on('load',function(store){
          this.Base.getForm().findField("id_pais_nac").setValue(loadedGrid.grid.getSelectionModel().getSelected().get('id_pais_nac'));       
        this.Base.getForm().findField("id_pais").setValue(loadedGrid.grid.getSelectionModel().getSelected().get('id_pais'));
        //alert(loadedGrid.grid.getSelectionModel().getSelected().get('id_pais_nac'));
    },this);
    
    storePaises.load();
Cómo puedo resolver este problema? Saludos y Gracias de antemano
0
Hola buen día. Ya pude solucionarlo. Lo que tuve que hacer fue que para poder asignar y luego hacer la parte de los combos sincronizados, tuve que cambiar el nombre de la propiedad ID y el de la propiedad HiddenName, al tenerlos con nombres diferentes ya puedo hacer ambas tareas. Saludos

¿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.