2012-07-19 18 views
15

que definen un cuadro combinado como ésteCómo cambiar datos del almacén de cuadro combinado en ExtJS 4.1

 
{ 
    xtype: 'combobox', 
    emptyText: 'Functions' 
    store: [ 'none' ] 
} 

a continuación, en algún caso, el almacén debe cargar nuevos datos, por lo que obtener la tienda del desplegable y probar este:

 
oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ]); 

pero después de esto, el cuadro combinado tiene un menú desplegable sin ningún contenido visible, solo pequeñas líneas en blanco.

Respuesta

17
// Change this... 
oFunctionStore.loadData(['dothis', 'dothat', 'dosomething' ]); 

// to this... 
oFunctionStore.loadData([ [ 'dothis' ], [ 'dothat' ], [ 'dosomething' ] ]); 
  • El cuadro combinado crea implícitamente un Ext.data.ArrayStore, que convertirá las matrices en los modelos. Se espera

  • El parámetro data pasado a loadData a ser o bien una serie de modelos, o un matriz de objetos que pueden ser convertidos en modelos (en este caso, una matriz de arrays).

  • En la carga de la tienda inicial, la matriz original se convirtió en [ [ 'none' ] ] entre bastidores.

ver un ejemplo here

1

Carstore - cualquier tienda de combo principal.

carModelStore - tienda, que debe ser dependía de la selección en el Carstore - cuadro combinado basado

var carModelStore = new Ext.data.Store({ 
    reader: new Ext.data.JsonReader({ 
     fields: ['id', 'car-model'], 
     root: 'rows' 
    }), 
    storeId: 'car-model-store', 
    proxy: new Ext.data.HttpProxy({ 
     url: 'carmodeldataprovider.json?car-name=lamborghini' 
    }), 
    autoLoad: true 
}); 


{ xtype: 'combo', name: 'car-name', fieldLabel: 'Car', mode: 'local', store: carStore, triggerAction: 'all', 
    listeners: { 
     select: function(combo, records, eOpts){ 
      var carName = records.get('car-name'); // the element selected in combo 
      var carModelStore = Ext.StoreMgr.lookup("car-model-store"); 

      carModelStore.proxy.setUrl('carmodeldataprovider.json?car-name=' + carName, false); 
      carModelStore.reload(); 
     } 
    } 

} 
Cuestiones relacionadas