2012-02-17 62 views
0

我有一組2個組合框。一個是國家組合,另一個是國家組合。默認情況下,狀態組合商店是空的,當我選擇一個國家,然後基於組合值字段狀態組合必須根據第一個組合進行過濾/加載。在Extjs2.0中,這是在Extjs4中改變的。Extjs4鏈接組合

國儲

var country_store = Ext.create('Ext.data.Store', { 
    //autoLoad: true, 
    fields: ['id','c_id','c_name'], 
    proxy: { 
     type: 'ajax', 
     url: 'country_list.php', 
     reader: { 
      type:'json', 
      root: 'results' 
     } 
    }, 
    storeId: 'edu_context_store' 
}); 

狀態存儲

var state_name = Ext.create('Ext.data.Store', { 
autoLoad: true, 
fields: ['id','s_id','s_name','parent_country_id'], 
proxy: { 
    type: 'ajax', 
    url: 'states_list.php', 
    reader: { 
     type:'json', 
     root: 'results' 
    } 
}, 
storeId: 'state_name' 

});

組合框

{ 
      xtype: 'combo', 
      id: 'country_combo', 
      hiddenName: 'country_name', 
      displayField: 'c_name', 
      valueField: 'c_id', 
      fieldLabel: 'Country', 
      queryMode: 'remote', 
      allowBlank: false, 
      triggerAction: 'all', 
      store: country_store, 
      width: 450, 
      selectOnFocus: true, 
      listeners:{ 
      scope: this, 
      'select': function(combo, rec, idx){ 
       var country_val = combo.getRawValue(); 
       var states_obj = Ext.getCmp('states_combo');   
         states_obj.clearValue(); 
         //states_obj.store.load(); 
         states_obj.store.filter('parent_country_id', country_val); 


      }       
     } 

     }, { 
      xtype: 'combo', 
      id: 'states_combo', 
      hiddenName:'state_name', 
      displayField:'s_name', 
      valueField:'s_id', 
      queryMode: 'remote', 
      fieldLabel: 'State', 
      cls: 'textlineht', 
      allowBlank: false, 
      triggerAction: 'all', 
      store: states_store, 
      width: 450 

     } 

任何人知道如何做到這一點?

謝謝!

+0

爲什麼這個註釋掉了? //states_obj.store.load(); – user1163459 2012-02-17 05:29:10

+0

我已經在狀態存儲中定義了autoLoad:true屬性。 – siva565 2012-02-17 08:50:49

+0

^所以當它被渲染時加載一次,然後再多加載 – Mchl 2012-02-17 08:54:33

回答

1

combo.getRawValue()將返回組合中顯示給用戶的值 - 而不是底層id值。試試combo.getValue()

+0

謝謝Amalea.By使用combo.getValue()。我能夠獲得valueField,但狀態組合不是過濾。 – siva565 2012-02-17 09:28:29

+0

我得到了縣和州json數據。像這個//國家商店({「total」:「2」,「results」:[{「id」:「1」,「c_id」:「US」 c_name「:」United Kingdom「},{」id「:」2「,」c_id「:」UK「,」c_name「:」美國「,}]})// States store({」total「:」 2「,」results「:[{」id「:」7「,」s_id「:」nyk「,」s_name「:」紐約「,」parent_country_id「:」美國「},{」id「:」8 「,」s_id「:」lon「,」s_name「:」Landon「,」parent_country_id「:」UK「}]}) – siva565 2012-02-17 09:37:39

+0

從文檔中聽者應該像這樣設置:'listeners:{select:{fn: function(){},scope:this}}',我試着用這個語法重寫它,看看是否有幫助。 – Amalea 2012-02-17 10:02:28