2012-02-17 77 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