2012-02-22 20 views
8

Tengo 3 cuadros combinados. Cuando hace clic en el primer cuadro, el segundo recuadro debe actualizarse mostrando los datos relevantes. Selecciono el primer combo, el segundo recuadro se actualiza perfectamente. Sin embargo, si lo intento de nuevo los mismos pasos que el segundo cuadro no se detiene la carga (ver imagen)extjs combo no se detiene cargando 4.07

enter image description here

Aquí está el código de mi vista

{ 
    xtype: 'combobox', 
    name: 'Clients', 
    id: 'clients', 
    displayField: 'Name', 
    store: 'Clients', 
    queryMode: 'local', 
    mode: 'local', 
    valueField: 'Id', 
    fieldLabel: 'Clients' 
},{ 
    xtype: 'combobox', 
    name: 'Projects', 
    id: 'projects', 
    displayField: 'Name', 
    editable: false, 
    store: 'Projects', 
    queryMode: 'local', 
    mode: 'local', 
    valueField: 'Id', 
    fieldLabel: 'Projects' 
} 

y desde mi controlador

stores: ['Projects', 'Clients', 'Jobs'], 

init: function() { 
    this.control({ 
     '#clients': { 
      change: this.onClientSelect 
     }, 
     'processlist button[action=copy]': { 
      click: this.onCopyPart 
     }, 
     '#processColourContainer #processColourGrid': { 
      edit: this.onPurchaseOrderColourUpdate 
     } 
    }); 
}, 

onLaunch: function() {    
    var clients = this.getClientsStore(); 
    clients.load();    
}, 
onClientSelect: function (selModel, selection) { 

    var projects = this.getProjectsStore(); 
    projects.load({ 
     url: '/Projects/Read/?clientId=' + selection, 
     scope: this 
    });  
}, 

Respuesta

3

me encontré con que enganchar en el evento 'ampliar' en el combo funcionó mejor (enganchar en 'carga' en la tienda de algún modo destruyeron la unión del combo a la tienda, causando todo tipo de errores horribles y difíciles de rastrear).

combo.on('expand', function (field, options) { 
    if (Ext.typeOf(field.getPicker().loadMask) !== "boolean") { 
     field.getPicker().loadMask.hide(); 
    } 
}, this); 

Esto hizo el trabajo por mí sin romper mi aplicación.

4

Tenía el mismo síntoma con un almacén de datos local con ExtJS Combobox, pero la corrección correcta era establecer queryMode correctamente en el cuadro combinado; no hay ningún error en la tienda (al menos en la versión 4.1 de ExtJS). queryMode debe establecerse en "local" en lugar de su valor "remoto" predeterminado, si sus datos se almacenan localmente dentro del almacén de datos (como en mi ejemplo de trabajo a continuación).

ComboBox:

xtype: 'combobox', 
name: 'sizeMaxUnits', 
value: 'TB', 
editable: false, 
displayField: 'abbr', 
**queryMode: 'local',** 
store: 'UnitsStore', 
valueField: 'units' 

tienda:

Ext.define('DiskApp.store.UnitsStore', { 
extend: 'Ext.data.Store', 

requires: [ 
    'DiskApp.model.UnitsModel' 
], 

constructor: function(cfg) { 
    var me = this; 
    cfg = cfg || {}; 
    me.callParent([Ext.apply({ 
     autoLoad: false, 
     model: 'DiskApp.model.UnitsModel', 
     storeId: 'MyStore', 
     data: [ 
      { 
       abbr: 'MB', 
       units: 'M' 
      }, 
      { 
       abbr: 'GB', 
       units: 'G' 
      }, 
      { 
       abbr: 'TB', 
       units: 'T' 
      } 
     ] 
    }, cfg)]); 
} 

});

2

Una solución muy simple es añadir la configuración listConfig a su cuadro combinado:

{ 
    xtype:'combobox', 
    fieldLabel: 'My Combo', 
    listConfig: { loadingText: null, loadMask: false }, 
} 
Cuestiones relacionadas