Templates y Temas para ExtJS y Sencha Touch Bleext!
Bleextop! un desktop OpenSource para Ext4 y CodeIgniter http://bit.ly/pUwLJO
¿Cómo solucionar un ComboBox dependiente atascado?
  • Vote Up0Vote Down yyeshuayyeshua January 23
    Posts: 56
    Hola humanidad.

    Veréis, tengo dos Combobox, uno depende de otro.
    En esta ocación seguí un patrón de pasar el combo dependiente como un parámetro del combo principal:


    var comboDepende = Ext.create('ComboDependeClass');

    var comboPrinipal = Ext.create('ComboPrincipal', {comboDependiente: comboDepende});


    A la clase de comboPrincipal he programado que cuando se seleccione recargue el combodependiente:


    //En comboPrincipal
    listeners:{
    select: function(self, model){
    if(!Ext.isEmpty(self.comboDependiente)){
    self.comboDependiente.reset();
    self.comboDependiente.getStore().load({params: {parent_id: model[0].get('id')} });
    }
    }
    }


    Bien. Cuando se carga el formulario el comboPrincipal autocarga su Store, y funciona. Luego selecciono un elemento de ese comboPrincipal y ejecuta bien el método, carga los datos en comboDepende. Entonces, selecciono un elemento en comboDepende y sigue funcionando bien. El problema viene, cuando entonces, de nuevo cambio de elemento de comboPrincipal, que de nuevo este ejecuta bien su función, pero comboDepende queda con la máscara de "loading..."

    Lo peor es que comboDepende se ha recargado bien con la nueva data, pero es inseleccionable por esa máscara...

    Si veo la actividad en la red (estoy usando crhomium) me muestra que la petición se realizó con éxito y retornó un 200 OK

    No entiendo porqué comboDepende queda con la máscara... ¿Alguna indea?

    Les dejo un ejenmplo resumido de mi clase comboDepende:


    Ext.define('ComboDepende', {
    extend: 'Ext.form.field.ComboBox',

    valueField: 'id',
    displayField: 'name',

    queryMode: 'local',
    typeAhead: false,
    triggerAction: 'all',

    initComponent: function(){
    this.store = Ext.create('Ext.data.Store', {
    autoLoad: false,
    model: 'Model',
    proxy: {
    type: 'ajax',

    api: {
    read: 'getData',
    },

    actionMethods: {
    read: 'POST'
    },

    reader: {
    type: 'json',
    root: 'data'
    }
    }
    });
    this.callParent();
    }//Fin del método inicComponent
    });

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

Poll

No poll attached to this discussion.

Tagged