Combo EXTJS
Buenos días, tengo problemas con un combo en un grid ExtJS. Por lo que veo es un problema bastante común, pero por muchos post que consulto, no logro solucionarlo ya que estoy empezando con EXTJS y estoy bastante perdida...
El problema es que al cargar el grid, en lugar de mostrarme en displayfield me muestra el valuefield... Sin embargo al editar el grid, si que me muestra correctamente el combo para que pueda seleccionar la provincia y no su código...
Les incluyo mi código a ver si alguien es tan amable de decirme qué estoy haciendo mal:
com.quizzpot.tutorials.Crud = {
init : function() {
//CRUD
var proxy = new Ext.data.HttpProxy({
api: {
read : "serverside/getContacts.php",
create : "serverside/createContact.php",
update : "serverside/updateContact.php",
destroy : "serverside/destroyContact.php"
}
});
var rd_random_employee_data = new Ext.data.JsonReader({}, ['idprovincia', 'descprovincia']);
var provincias = new Ext.data.Store({
reader: new Ext.data.JsonReader({
fields: ['idprovincia', 'descprovincia'],
root: 'rows'}),
proxy: new Ext.data.HttpProxy({
url: 'serverside/getProvincias.php'
}),
autoload:true
});
var provin = new Ext.form.ComboBox({
id: 'idprovincia',
store: provincias,
valueField: 'idprovincia',
displayField: 'descprovincia',
mode: 'remote',
minChars : 0 ,
autoload:true
});
function muestraDescripcion(valor)
{
alert("hola");
var comboTipoPregunta = Ext.getCmp('provin');
var stx = comboTipoPregunta.getStore();
var index = stx.find('provinciadelegacion',valor);
if(index>-1){
var record = stx.getAt(index);
return record.get('descprovincia');
}
};
var reader = new Ext.data.JsonReader({
totalProperty : 'total',
successProperty : 'success', //+seleccionados;
}
}
Ext.onReady(com.quizzpot.tutorials.Crud.init,com.quizzpot.tutorials.Crud);
Gracias por su atención!! Un saludo.
Hola Crysfel! Gracias por tu ayuda, creo que ya lo he hecho (y digo creo porque al ser novata voy haciendo pruebas hasta que sale algo...) pero ahora parece ser que no devuelve nada la función, ¿puedes echarme un vistazo a ver si ves algo erróneo?
Miles de gracias.
com.quizzpot.tutorials.Crud = {
init : function() {
//CRUD
var proxy = new Ext.data.HttpProxy({
api: {
read : "serverside/getContacts.php",
create : "serverside/createContact.php",
update : "serverside/updateContact.php",
destroy : "serverside/destroyContact.php"
}
});
var rd_random_employee_data = new Ext.data.JsonReader({}, ['idprovincia', 'descprovincia']);
var provincias = new Ext.data.Store({
reader: new Ext.data.JsonReader({
fields: ['idprovincia', 'descprovincia'],
root: 'rows'}),
proxy: new Ext.data.HttpProxy({
url: 'serverside/getProvincias.php'
}),
autoload:true,
id:'cmbProvin'
});
var provin = new Ext.form.ComboBox({
id: 'idpro',
store: provincias,
valueField: 'idprovincia',
displayField: 'descprovincia',
mode: 'remote',
minChars : 0 ,
autoload:true
});
function muestraDescripcion(valor)
{
var comboTipoPregunta = Ext.getCmp('idpro');
var stx = comboTipoPregunta.getStore();
var index = stx.find('idprovincia',valor);
if(index>-1){
var record = stx.getAt(index);
return record.get('descprovincia');
}
};
var reader = new Ext.data.JsonReader({
totalProperty : 'total',
successProperty : 'success', //+seleccionados;
}
}
Ext.onReady(com.quizzpot.tutorials.Crud.init,com.quizzpot.tutorials.Crud);
Necesitas asignarle un "renderer" a la columna donde se aloja el combobox, dentro de esa función tendrías que retornar el valor correcto del combo.
Saludos
Hola, yo tmb estaba haciendo algo parecido... el renderer deberia ser algo asi:
renderer:function(value,metadata,registro, rowIndex, colIndex){
if(!Ext.isEmpty(value)){
var dato = provincias.findExact("idprovincia", value);
if (dato != -1 ) {
var reg = provincias.getAt(dato);
value = reg.get('descprovincia');
}
return value;
}
Verosb, creo que la respuesta ya es tardía, espero que a alguien le funcione.
Saludos Foro.
¿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.