`
txf2004
  • 浏览: 7206993 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Extjs之Combobox两级联动使用

 
阅读更多
<html>
<head>
<!-- 加载ExtJS -->
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css"/>
<script src="extjs/resources/ext-all.js"></script>
<script src="extjs/resources/ext-lang-zh_CN.js"></script>
<script language="javascript">
Ext.onReady(function(){
	//性别store
	var sexStore = Ext.create('Ext.data.Store', {
	    fields: ['code', 'name'],
	    data : [
	        {"code":"0", "name":"female"},
	        {"code":"1", "name":"male"}
	    ]
    });
    //所有人Store
   var people = Ext.create('Ext.data.Store', {
    fields: ['code','sexcode', 'name'],
    data : [
        {"code":"0", "sexcode":"0", "name":"li"},
        {"code":"1","sexcode":"0", "name":"zhang"},
        {"code":"2","sexcode":"1", "name":"sun"},
    ]
    });
    //combobox显示指定性别store
    var peopleChoose = Ext.create('Ext.data.Store', {
          fields: ['code','sexcode', 'name']
    });
    // 选择性别 combobox
Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose Sex',
    store: sexStore,
    id:'combo.ChooseSex',
    queryMode: 'local',
    displayField: 'name',
    valueField: 'code',
    renderTo: Ext.getBody(),
    listeners:{
	    'change':function(thisField,newValue,oldValue,epots){
		    if(newValue!=null){
			        Ext.getCmp('combo.ChoosePeople').setDisabled(false);
			           people.filterBy(function(record){
				        return record.get('sexcode')==newValue;
				        });
				        Ext.getCmp('combo.ChoosePeople').expand();
				        //使用peopleStore时
//			        peopleChoose.removeAll();
//			        people.each(function(record){
//				        //过滤通过性别选择符合的人员数据
//				       if(record.get('sexcode')==newValue){
//					       peopleChoose.add(record);
//					       }
//				       });
			  }else{
				  Ext.getCmp('combo.ChoosePeople').setDisabled(true);
				  }
		    }
	    }
});

Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose People',
    //store: peopleChoose,
    store:people,
    disabled:true,
    id:'combo.ChoosePeople',
    queryMode: 'local',
    displayField: 'name',
    valueField: 'code',
    autoSelect:false,
    renderTo: Ext.getBody()
    });
Ext.create('Ext.Button', {
    text: 'submit',
    renderTo: Ext.getBody(),
    handler: function() {
	    var sexCode = Ext.getCmp('combo.ChooseSex').getValue();
	    var nameCode = Ext.getCmp('combo.ChoosePeople').getValue();
	    //排除为null时,赋值为""
	    if(!sexCode){
		    sexCode="";
		    }
		if(!nameCode){
			nameCode="";
			}
       alert("sexCode:"+sexCode+"\tnameCode:"+nameCode);
    }
});
  });
</script>
<!-- Put your page Title here -->
<title>	Cache Server Page </title>

</head>

<body>
combobox测试
</body>
</html>


直接上html页面代码,做了个简单的测试例子

这里选择将第二个combobox组件在第一个值为null的时候disabled,有值的时候可以使用。需要注意的是combobox值为空时获取到的value是null,这样我们在提交的时候一定要注意处理,将为null的的值进行处理,这里我们赋值为"".

存在的问题:

事件监听choose sex 控件的change时,改变后直接展开choosePeople,数据是过滤后的,但是当我第一次点击choosePeople的下拉框时就会加载所有的peopleStore中的数据,第二次点击就不会加载所有数据。如何解决这样的问题,(代码中注释掉的用第三个store的办法除外)

分享到:
评论

相关推荐

    extjs的ComboBox 2级联动

    本文将深入探讨如何在ExtJS中实现ComboBox的二级联动。 首先,我们需要理解ExtJS中的ComboBox基本结构。ComboBox由几个关键部分组成,包括store(数据存储)、displayField(显示字段)和valueField(值字段)。...

    ExtJS Combobox二级联动列子

    2. 二级联动:指两个或多个Combobox之间存在依赖关系,当一个Combobox的值改变时,另一个Combobox的选项也会相应更新。 二、实现原理 1. 数据模型:通常使用Store来存储数据,Store中每个记录包含多个字段,对应...

    Extjs4.0 ComboBox如何实现三级联动

    在ExtJS 4.0中实现ComboBox的三级联动,我们需要创建三个不同的数据存储(Store),分别对应省份、城市和区县。每个Store都需要一个Model来定义数据结构,并配置代理(Proxy)来从服务器获取数据。这里我们将详细...

    Extjs4---combobox省市区三级联动+struts2

    本案例涉及的关键技术主要包括Extjs4框架中的`combobox`组件以及Struts2框架,通过这两种技术实现了省市区三级联动的效果。下面将详细介绍其中涉及到的核心知识点。 #### 二、Extjs4 combobox组件介绍 1. **基础...

    Ext二级联动完整例子

    在ExtJS中,"二级联动"通常指的是两个或多个下拉框(ComboBox)之间的联动效果,即在一个下拉框选择一个选项后,另一个下拉框会根据前者的选值动态更新其选项。这在数据筛选、地区选择、分类细化等场景中非常常见。 ...

    Extjs3+MySQL后台数据库实现省份城市二级联动

    本文将深入探讨如何使用ExtJS 3结合MySQL来实现一个省份城市二级联动的前端与后台系统。 首先,ExtJS 3提供了丰富的组件和API,使得开发者可以轻松创建各种复杂的用户界面,如下拉菜单、表格、表单等。在这个案例中...

    EXT中COMBOX联动

    "EXT中COMBOBOX联动"指的是在EXTJS应用中,两个或多个COMBOBOX之间实现数据交互和联动效果,即当一个COMBOBOX的选择项改变时,会触发其他COMBOBOX的更新,以展示与当前选择相关联的数据。 EXTJS的COMBOBOX联动通常...

Global site tag (gtag.js) - Google Analytics