[Solucionado] Problema con Campo combinado Text + Combo
Estoy tratando de hacer (en ExtJS 3) un campo combinado: un TextField donde se pueda cargar el código de Provincia y un combo donde se pueda seleccionar el nombre de la misma.
Luego de mucho buscar y probar, llegué a esto:
var comboProvinciaStore = new Ext.data.JsonStore({
fields: [ {name: 'CodProv', type: 'string'},
{name: 'Provincia', type: 'string'} ],
root: 'cboProvincia',
autoLoad: true,
url: 'listarProvincias.php'
});
var codPcia = new Ext.form.TextField({
id: 'codPcia',
minLength: 2,
maxLength: 2,
xtype: 'numberfield',
style: 'text-align: right',
width: 40
});
var comboProvincia = new Ext.form.ComboBox({
id: 'Provincia',
// fieldLabel: 'Provincia',
hiddenName: 'CodProv',
name: 'Provincia',
width: 300,
model: 'local',
triggerAction: 'all',
displayField: 'Provincia',
valueField: 'CodProv',
store: comboProvinciaStore,
empyText: 'Seleccione una Provincia',
editable: false,
listeners: {
select: function( combo, registro, indice ) {
Ext.getCmp('codPcia').setValue(registro.get('CodProv'));
},
afterrender: function( cbo ) {
cbo.setValue('CodProv');
cbo.setRawValue('Provincia');
},
change: function ( cbo, NuevoValor, ViejoValor ) {
cbo.setValue('CodProv');
cbo.setRawValue('Provincia');
}
}
});
var compoCodyComboProvincia = new Ext.form.CompositeField (
{ combineErrors: false,
fieldLabel: 'Provincia',
items: [ codPcia, comboProvincia ]
} );
codPcia.on('change', function ( This, NuevoValor, ViejoValor ) {
comboProvincia.setValue(NuevoValor);
}
);
Las provincias devueltas por listarProvincias.php son:
({"cboProvincia":[{"CodProv":"00","Provincia":"Nacion"},{"CodProv":"02","Provincia":"Ciudad de Buenos Aires"},{"CodProv":"10","Provincia":"Catamarca"},{"CodProv":"14","Provincia":"Cordoba"},{"CodProv":"18","Provincia":"Corrientes"},{"CodProv":"22","Provincia":"Chaco"},{"CodProv":"26","Provincia":"Chubut"},{"CodProv":"30","Provincia":"Entre Rios"},{"CodProv":"34","Provincia":"Formosa"},{"CodProv":"38","Provincia":"Jujuy"},{"CodProv":"42","Provincia":"La Pampa"},{"CodProv":"46","Provincia":"La Rioja"},{"CodProv":"50","Provincia":"Mendoza"},{"CodProv":"54","Provincia":"Misiones"},{"CodProv":"58","Provincia":"Neuquen"},{"CodProv":"62","Provincia":"Rio Negro"},{"CodProv":"66","Provincia":"Salta"},{"CodProv":"70","Provincia":"San Juan"},{"CodProv":"74","Provincia":"San Luis"},{"CodProv":"78","Provincia":"Santa Cruz"},{"CodProv":"82","Provincia":"Santa Fe"},{"CodProv":"86","Provincia":"Santiago del Estero"},{"CodProv":"90","Provincia":"Tucuman"},{"CodProv":"94","Provincia":"Tierra del Fuego"}]})
El problema es que al principio andaba bien, pero luego (de algún cambio que no recuerdo) empezó a poner la palabra "Provincia" en el combo, al salir de dicho combo...
¿Alguien me ayudaría a arreglarlo?
Gracias.
Ya lo solucioné, lo dejo acá por si le sirve a alguien.
Sobraba el evento change del combo, lo saqué y quedó así:
listeners: {
select: function( combo, registro, indice ) {
Ext.getCmp('codPcia').setValue(registro.get('CodProv'));
},
afterrender: function( cbo ) {
cbo.setValue('CodProv');
cbo.setRawValue('Provincia');
}}
y con eso anda perfecto.
¿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.