2012-10-30 21 views
5

Nella mia classe base ho una casella combinata, in cui configuro solo la proprietà "campi". In questo modo:Riempimento di Extjs Combobox con dati statici

items: [ 
     comboText = Ext.create('Ext.form.ComboBox', { 
       width: 150, 
       padding: '0 20 0 0', 
       displayField: 'label', 
       store: Ext.create('Ext.data.Store', { 
        fields: [ 
         {type: 'string', name: 'label'}, 
         {type: 'string', name: 'fieldName'} 
        ] 
       }) 
      }), 
...] 

Come posso passare solo la proprietà data a questa combo? Ho provato il codice qui sotto, ma non funziona:

comboTest.store.loadData(value); 

dove il valore contiene un array come questo:

[ 
    {"label":"First name", "fieldName":"firstname"}, 
    {"label":"Birth date", "fieldName":"birthdate"} 
] 

Nessun errore, ma la casella combinata si apre nulla.

risposta

8

Prova questa configurazione:

 xtype:'combo', 
     fieldLabel:'Division', 
     name:'division', 
     queryMode:'local', 
     store:['A','B','C'], 
     displayField:'division', 
     autoSelect:true, 
     forceSelection:true 

Un'altra alternativa è tutelato nel docs of the ComboBox:

// The data store containing the list of states 
    var states = Ext.create('Ext.data.Store', { 
     fields: ['abbr', 'name'], 
     data : [ 
      {"abbr":"AL", "name":"Alabama"}, 
      {"abbr":"AK", "name":"Alaska"}, 
      {"abbr":"AZ", "name":"Arizona"} 
      //... 
     ] 
    }); 

    // Create the combo box, attached to the states data store 
    Ext.create('Ext.form.ComboBox', { 
     fieldLabel: 'Choose State', 
     store: states, 
     queryMode: 'local', 
     displayField: 'name', 
     valueField: 'abbr', 
     renderTo: Ext.getBody() 
    }); 
1

valueField è obbligatoria per combobox. Prova a impostare valueField nella tua casella combinata.

8

ho avuto questo lavoro utilizzando:

xtype:'combo', 
    fieldLabel:'Division', 
    name:'division', 
    valueField: 'division', 
    queryMode:'local', 
    store:['A','B','C'], 
    displayField:'division', 
    autoSelect:true, 
    forceSelection:true 

So che questa domanda è molto vecchio, ma solo nel caso in cui qualcuno viene in cerca di una risposta che funziona out of the box; per me è stato questo.

+0

Mi piace questa soluzione per la sua semplicità. Un riferimento al manuale dell'API in cui è descritto: http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.form.field.ComboBox-cfg-store Cerca la configurazione del negozio. –