2013-03-27 88 views
2

我有兩個組合框,我正在使用一個包含'sg'和'aod'鍵中2個組合數據的商店。Extjs - 如何填充組合框形成單一商店?

比方說,爲第1組合我想中填充數據的「SG」鍵

對於第二組合我想,以填補關鍵數據稱爲「AOD」

那我該怎麼填數據同時呈現組合?

這裏是我的商店:

var myStore = Ext.create('Ext.data.Store', { 
 
    fields: [{ 
 
    name: 'sg' 
 
    }, { 
 
    name: 'aod' 
 
    }], 
 
    data: [{ 
 
     'sg': ['1', '2', '3', '4', '5'] 
 
    }, { 
 
     'aod': ['15', '20'] 
 
    } 
 

 
    ] 
 
}); 
 

 

 
Here is my comobos inside items config 
 

 
defaults: { 
 
    labelAlign: 'top', 
 
    width: '20%', 
 
    style: { 
 
     textAlign: 'center', 
 
     color: '#0a4374', 
 
     fontSize: '12px', 
 
     fontWeight: 'bold' 
 
    }, 
 
    labelSeparator: '', 
 
    allowEmpty: false, 
 
    editable: false, 
 
    cls: 'extraComboBox', 
 
    xtype: 'combo', 
 
    autoSelect: true, 
 
    margin: 10 
 
    }, 
 
    items: [{ 
 
     fieldLabel: 'Combo 1', 
 
     value: '', 
 
     //Here I want to load myStore.data.items[0].data.sg \t \t \t \t \t \t \t \t 
 
    }, 
 

 
    { 
 
     fieldLabel: 'Combo 2', 
 
     value: '', 
 
     //myStore.data.items[1].data.aod \t \t \t 
 
    }

感謝您的幫助!

回答

1

通過使用myStore.getAt(0).get('sg')我能夠將數據填充到第1組合和同樣採用第二組合myStore.getAt(0).get('aod')

要爲每個組合的缺省值加

{ 
    fieldLabel: 'Combo 1', 
    id: 'sg', 
    store: myStore.getAt(0).get('sg').data, 
    listeners: { 
     afterrender: function (combo) { 
      combo.setValue(myStore.getAt(0).get(combo.id).default); 
     } 
    } 
}, { 
    fieldLabel: 'Combo 2e', 
    id: 'aod', 
    store: myStore.getAt(0).get('aod').data, 
    listeners: { 
     afterrender: function (combo) { 
      combo.setValue(myStore.getAt(0).get(combo.id).default); 
     } 
    } 

} 

,改變JSON如下:

var myStore = Ext.create('Ext.data.Store', { 

    fields: [ 
     {name: 'sg'}, 
     {name: 'aod'} 
    ], 

    data: [{ 
      'sg': { 
       'default': 1, 
       'data': ['1', '2', '3', '4', '5'] 
      } 
     }, { 
      'aod': { 
       'default': '15', 
       'data': ['15', '20'] 
      } 
     } 
    ] 
});