2012-08-24 12 views
9

Mam następujący kod pola kombi, w jaki sposób można uzyskać wartość wybraną w combobox i załadować tę wartość do zmiennej, a następnie użyć go później.jak uzyskać wartość w polu kombi extjs?

Dziękuję

Ext.define('Column', { 
    extend: 'Ext.data.Model', 
    fields: ['data1', 'Data2'] 
}); 

var store = Ext.create('Ext.data.Store', { 
    model: 'Column', 
    autoLoad: true, 
    proxy: { 
     type: 'ajax', 
     url: '/data.xml', 
     reader: { 
      type: 'xml', 
      record: 'result' 
     } 
    } 
}); 

var simpleCombo = Ext.create('Ext.form.field.ComboBox', { 
    store: store, 
    displayField: 'data1', 
    valueField: 'data1', 
    width: 250, 
    labelWidth: 120, 
    fieldLabel: 'select a value', 
    renderTo: 'simpleCombo', 
    queryMode: 'local', 
    typeAhead: true 
}); 
+0

Jakiej wersji Ext używasz? – sitifensys

+0

@sitifensys w oparciu o użycie Ext.define & Models musi to być wersja 4.x – sra

Odpowiedz

10

Wystarczy użyć zdarzenia select

var simpleCombo = Ext.create('Ext.form.field.ComboBox', { 
      store: store, 
      displayField: 'data1', 
      valueField: 'data1' , 
      width: 250, 
      labelWidth: 120, 
      fieldLabel: 'select a value', 
      renderTo: 'simpleCombo', 
      queryMode: 'local', 
      typeAhead: true, 
      listeners: { 
       select: function(combo, records) { 
        // note that records are a array of records to be prepared for multiselection 
        // therefore use records[0] to access the selected record 
       } 
     }); 

API Link

dodatkowe treści z uwagami:

Spójrz na właściwość combobox multiSelect. Wszystkie wartości są rozdzielane przez zdefiniowany separator, a zdarzenie select daje tablicę rekordów z więcej niż jednym rekordem. Zauważ, że getValue() daje tylko zdefiniowany displayField, który jest ciągiem, a nie samym rekordem. Zatem użycie iComboValue [0] daje ci pierwszą postać. Wybrane rekordy powinny być zawsze dostępne przy użyciu wybranego zdarzenia. Ale możesz przechowywać je w tablicy do późniejszego użycia i zastąpić je dowolnym nowym wyborem.

+0

Dzięki. Użyłem rekordów [0], dostałem błąd. Ale kiedy próbuję użyć var ​​iComboValue = simpleCombo.getValue(); \t \t \t \t Ext.Msg.alert ("Witaj, to jest tytuł", iComboValue); . To zadziałało dla mnie. Jeśli używam iComboValue [0], daje mi ona tylko pierwszą literę opcji wyboru. Jak mogę dokonać wielokrotnego wyboru, a następnie zapisać wybrane wartości? Dzięki – shiro

+0

@shiro zapoznaj się z właściwością [multiSelect] (http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.field.ComboBox-cfg-multiSelect) combobox. Wszystkie wartości są rozdzielane przez zdefiniowany separator, a zdarzenie select daje tablicę rekordów z więcej niż jednym rekordem. Zauważ, że getValue() daje tylko zdefiniowany displayField, który jest ciągiem, a nie samym rekordem. Zatem użycie iComboValue [0] daje ci pierwszą postać. Wybrane rekordy powinny być zawsze dostępne przy użyciu wybranego zdarzenia. Ale możesz przechowywać je w tablicy do późniejszego użycia i zastąpić je dowolnym nowym wyborem. – sra

+0

'var i = simpleCombo.getValue();' jest lepszym rozwiązaniem. – pllee

7

Można również użyć:

var iComboValue = simpleCombo.getValue(); 
0

może powinieneś spróbować tego

// to get the combobox selected item outside the combo listener 
     simpleCombo.on('change', function (combo, record, index) { 

      alert(record); // to get the selected item 

      console.log(record); // to get the selected item 

     }); 
0

Podczas korzystania combo.getValue() (jak Izhaki wskazał), upewnij się, że pole kombi został skonfigurowany poprawnie użyć odpowiedniego pola z modelu sklepu.

Przechowywać w polu wartości i nazwy pola

var bandsStore = Ext.create('Ext.data.Store', { 
    fields: ['color', 'name'], 
    data : [ 
    {"color": "green", "name": "Green Day"}, 
    {"color": "pink", "name": "Pink Floyd"}, 
    {"color": "purple", "name": "Deep Purple"} 
    ] 
}); 

Combo box przy użyciu pola kolorów dla wartości

}, { 
    xtype: 'combo', 
    id: 'BandsCombo', 
    fieldLabel: 'Band Names', 
    name: 'bandNames', 
    store: bandsStore, 
    displayField: 'name', 
    valueField: 'color' 
}, { 

spędził trochę pracując dzisiaj dlaczego moja forma utrzymane księgowanie wartości null dla pola combobox. To był problem. :)

Powiązane problemy