Templates y Temas para ExtJS y Sencha Touch Bleext!
Bleextop! un desktop OpenSource para Ext4 y CodeIgniter http://bit.ly/pUwLJO
como seleccionar el valor de un Ext.data.JsonStore
  • Vote Up0Vote Down jhonamaldonadozjhonamaldonadoz December 2010
    Posts: 5
    reciba un saludo, y agadecerle de antemano la colaboracion que presta a la comunidad, estoy tratando de cargar un combo dinamicamente, pero quiero que el mismo se inicie con un valor por defecto.
    este es mi json


    var storeComCountry = new Ext.data.JsonStore({
    url :'php/response_search.php',
    root :'results',
    totalProperty:'count',
    baseParams :{oper :'comboCountry'},
    fields :[
    {name:'id', type:'string'},
    {name:'country', type:'string'}
    ]
    });
    storeComCountry.load();


    y aqui tengo mi combo:


    xtype :'combo',
    id :'comboCountry',
    name :'comboCountry',
    mode :'local',
    store : storeComCountry,
    editable :false,
    allowBlank :false,
    hiddenName:'country',
    displayField:'country',
    valueField :'id',
    lastQuery: '',
    triggerAction:'all',
    selectOnFocus:true,
    fieldLabel:'Country',
    listeners :{
    beforerender : function(combo){
    registro = Ext.getCmp("storeComCountry").getAt(0);
    Ext.Msg.alert("titulo",registro.get('id'));
    combo.setValue(valor);
    }
    }


    le agradeceria mucho su ayuda
  • 7 Answers sorted by
  • Vote Up0Vote Down CrysfelCrysfel December 2010
    Posts: 897
    primero tienes que cargar el Store, una vez que se cargue puedes asignarle al combo un valor con el método "setValue".

    Saludos
  • Vote Up0Vote Down jhonamaldonadozjhonamaldonadoz December 2010
    Posts: 5
    gracias por tu respuesta, pero todavía quede con duda, yo estoy cargando el JsonStore, si puedes colocarme algun ejemplo funcional le agradaceria :)
  • Vote Up0Vote Down tokkaidotokkaido December 2010
    Posts: 395
    para el combo tienes 2 métodos que puedes usar: "select()" y "selectByValue()", al primero debes pasarle el index del elemento de la lista que quieres que se seleccione y el segundo necesita el valor, para asignárselos podrías crear un listener al evento load del store, creo, porque como es asincronico podría no estar cargado en el combo si lo haces con un listener desde tu combo.

    puedo estar equivocado pero creo que esto:

    registro = Ext.getCmp("storeComCountry").getAt(0);

    no puedes hacerlo asi, podrías hacerlo de una de estas 3 maneras:

    como estas dentro del listener del combo, podrias usar

    combo.getStore().getAt(0);

    o

    Ext,getCmp('comboCountry').getStore().getAt(0);

    o si el asignas un storeId a tu store, por ejemplo:

    storeId: 'storeComCountry',

    podrias usar

    Ext.StoreMgr.lookup('storeComCountry').getAt(0);

    espero te sirva :) .
  • Vote Up0Vote Down jhonamaldonadozjhonamaldonadoz December 2010
    Posts: 5
    gracias por tu respuesta Tokkaido, pero no me sirvio, no se si lo estare haciendo mal, pero coloque como me dijiste y nada :-( , no endiendo que estoy haciendo mal,

    cargo el JsonStore, y en el metodo beforerender del combo, quiero colocarle la primera posicion del store, pero nada!, alguna otra respuesta seria de utilidad gracias ;-)
  • Vote Up0Vote Down tokkaidotokkaido December 2010
    Posts: 395
    mira, hice una prueba y si siempre vas a querer que se seleccione el mismo valor, digamos el primero, puedes colocar en la definición de tu combobox la propiedad: "value:1", ahora este "1" dependerá del valor de tu campo valueField, no del orden de los elementos, espero te sirva :)
  • Vote Up0Vote Down jhonamaldonadozjhonamaldonadoz December 2010
    Posts: 5
    ok muchas gracias Tokkaido, voy a probar y les aviso :)
  • Vote Up0Vote Down ximxim August 2011
    Posts: 1
    Hola que tal!!!! :-?
    estuve checando lo que decian sobre seleccionar el primer registro y nada me funciono.
    investige por ai y decian que poniendo en el store los siguiente:
    'selected':'selected' antes de el registro a seleccionar pero no me funciono!!! :-?
    asi que llege a este foro y vi los comentarios y tampoco me funciono.
    asi q decidi hacerlo por mi cuenta.
    en la forma que puedo seleccionar lo de la siguiente manera:

    listeners:{
    'render':function(obj){
    var store = obj.getStore();
    store.load({
    callback:function(){
    var fila= obj.getStore(0).getAt(0);//selecciono primera fila
    obj.setValue(fila.get('id'));//ingreso el value del combo
    }
    });
    },
    }//fin listener

    bueno espero esto les sirva gracias!! B-)

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook Sign In with Twitter

Sign In Apply for Membership

In this Discussion

Poll

No poll attached to this discussion.

Tagged