2012-08-24 29 views
9

Tôi có một mã sau cho hộp tổ hợp, làm thế nào tôi có thể nhận được giá trị được chọn trong combobox và tải giá trị đó vào một biến và sử dụng nó sau này.cách lấy giá trị trên hộp kết hợp extjs?

Cảm ơn bạn

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

Phiên bản Ext bạn đang sử dụng là gì? – sitifensys

+0

@sitifensys dựa trên việc sử dụng Ext.define & Models, phải có một số phiên bản 4.x – sra

Trả lời

10

Đơn giản chỉ cần sử dụng sự kiện chọn

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

nội dung bổ sung từ các ý kiến:

Hãy xem tài sản multiSelect của combobox. Bạn nhận được tất cả các giá trị được phân cách bằng dấu phân tách được xác định và sự kiện chọn sẽ cung cấp cho bạn một mảng bản ghi với nhiều bản ghi đó. Lưu ý rằng getValue() chỉ cung cấp cho bạn displayField được định nghĩa là một chuỗi chứ không phải bản thân bản ghi. Vì vậy, việc sử dụng iComboValue [0] sẽ cho bạn nhân vật đầu tiên. Các bản ghi đã chọn sẽ luôn được truy cập bằng sự kiện đã chọn. Nhưng bạn có thể lưu trữ chúng trong một mảng để sử dụng sau này và ghi đè lên nó với bất kỳ lựa chọn mới nào.

+0

Cảm ơn bạn. Tôi đã sử dụng hồ sơ [0], tôi gặp lỗi. Nhưng khi tôi cố gắng sử dụng var iComboValue = simpleCombo.getValue(); \t \t \t \t Ext.Msg.alert ('Xin chào đây là tiêu đề', iComboValue); . Nó làm việc cho tôi. Nếu tôi sử dụng iComboValue [0], nó chỉ cho tôi chữ cái đầu tiên của tùy chọn chọn. Làm cách nào tôi có thể thực hiện nhiều lựa chọn và sau đó lưu trữ các giá trị đã chọn đó? Cảm ơn – shiro

+0

@shiro xem xét thuộc tính [multiSelect] (http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.field.ComboBox-cfg-multiSelect) của combobox. Bạn nhận được tất cả các giá trị được phân tách bằng dấu phân tách được xác định và sự kiện chọn sẽ cung cấp cho bạn một mảng bản ghi với nhiều hơn một bản ghi đó. Lưu ý rằng getValue() chỉ cung cấp cho bạn displayField được định nghĩa là một chuỗi chứ không phải bản thân bản ghi. Vì vậy, việc sử dụng iComboValue [0] sẽ cho bạn nhân vật đầu tiên. Các bản ghi đã chọn sẽ luôn được truy cập bằng sự kiện đã chọn. Nhưng bạn có thể lưu trữ chúng trong một mảng để sử dụng sau này và ghi đè lên nó với bất kỳ lựa chọn mới nào. – sra

+0

'var i = simpleCombo.getValue();' là một giải pháp tốt hơn. – pllee

7

Bạn cũng có thể sử dụng:

var iComboValue = simpleCombo.getValue(); 
0

có thể bạn nên thử loại này

// 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

Khi sử dụng combo.getValue() (như Izhaki đã chỉ ra), đảm bảo các combo box đã được cấu hình một cách chính xác để sử dụng trường có liên quan từ mô hình cửa hàng.

Store với một lĩnh vực có giá trị và các lĩnh vực tên

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 hộp bằng trường màu cho giá trị

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

Đã dành một chút trong khi ngày nay làm việc ra lý do tại sao hình thức của tôi giữ đăng null cho trường combobox. Đây là vấn đề. :)

Các vấn đề liên quan