Problemas al asignar valor a un combo
Saludos ....
Tengo 3 combos configurados casi de la misma manera:
var cmbTipoProveedor = new Ext.form.ComboBox({
fieldLabel: 'Tipo de Proveedor',
forceSelection: true,
displayField:'descripcion',
valueField: 'codigo_tipo_provedor',
loadingText: 'Cargando ...',
pageSize: 7,
anchor: '100%',
minChars: 1,
triggerAction: 'all',
width: 250,
name: 'cmbTipoProveedor',
store: dsGtgeTipoProveedor,
emptyText: 'Seleccione un Tipo de Proveedor',
allowBlank: false,
editable: true,
hiddenName: 'cmbTipoProveedor'
});
Como pueden ver en el combo en la propiedad valueField tengo un codigo y en la propiedad displayField se presenta un nombre, mas o menos la informacion que me trae el dataStore que esta relacionada con el combo es la siguiente:
codigo_tipo_proveedor descripcion
1 -> "Pepito"
2 -> "Rosita"
3 -> "Maria"
Y el combo me funciona perfecto puesto que me presenta el nombre y cuando envio el formulario con el combo viaja el codigo.
El problema se me presenta es cuando quiero asignar un valor al combo por ejemplo el codigo 2 y se me deberia presentar en este caso Rosita, pero en lugar de eso se me presenta el numero 2, yo lo estoy asignando de la siguiente manera:
variable = 2
cmbTipoProveedor.setValue(variable);
Lo raro es que puse un alert para ver los valores que se estaban pasando y luego del alert se presento el combo como yo queria, quite el alert y nuevamente me presento el codigo, volvi a poner el alert y otra vez se arreglo.
Cual es la forma correcta para asignar un valor a un combo y este me presente el nombre y no el codigo ???
Gracias ....
en mi experiencia siempre que se da dicho problema es que el store no está cargado en el momento en que asignamos el valor al combo. recuerda que la carga de los stores es asincronica y que javascript es un lenguaje interpretado, lo que quiere decir que cuando el código llama a la carga del store no se detiene a esperar que el store esté plenamente cargado y solo sigue ejecutando linea tras linea.
asegúrate que cuando le estés asignando tu valor al combo el store este plenamente cargado, el error mas común es creer que asignarle el valor cuando el formulario o la ventana se ha renderizado, digamos con el evento 'afterrender' del componente, es lo correcto cuando en realidad lo que debe hacerse es cuando el store ha cargado, por ejemplo con el evento 'load' del store, algo así como:
this.mycombo.getStore().on('load', function(){
this.mycombo.setValue(mi_valor);
}, this);
espero te sea de ayuda
¿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.