2012-07-19 11 views
15

zdefiniować combobox jak tenJak zmienić przechowywania danych combobox w ExtJS 4,1

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

potem na jakiejś imprezy sklep powinien załadować nowe dane, więc mam sklep z combobox i spróbuj tego:

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

ale po tym combobox ma rozwijane bez widocznej zawartości, tylko małe puste wiersze.

Odpowiedz

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

// to this... 
oFunctionStore.loadData([ [ 'dothis' ], [ 'dothat' ], [ 'dosomething' ] ]); 
  • List rozwijana niejawnie stwarza obraz Ext.data.ArrayStore, który będzie konwertować tablice do modeli. Oczekuje się

  • Parametr data przekazywane loadData być albo szereg modeli albo szereg obiektów można następnie przekształcić w modelach (w tym przypadku, tablicy tablic).

  • Przy początkowym ładowaniu magazynu oryginalna tablica została za kulisami przekształcona na [ [ 'none' ] ].

zobaczyć przykład here

1

carStore - w każdym sklepie dla głównego kombi.

carModelStore - sklep, która powinna być uzależniona od wyboru w carStore - pola kombi na bazie

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(); 
     } 
    } 

} 
Powiązane problemy