`
txf2004
  • 浏览: 7040851 次
  • 性别: 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---combobox省市区三级联动+struts2

    在这个特定的项目“Extjs4---combobox省市区三级联动+struts2”中,我们将探讨如何利用ExtJS 4的ComboBox组件实现省市区的三级联动效果,并结合Struts2框架进行数据交互。 首先,`ComboBox`是ExtJS中的一个组件,它...

    extjs4 ComboBox 点击下拉框 出现grid效果

    在EXTJS4中,ComboBox是一个常用的组件,它用于创建下拉选择框,通常用于输入框的辅助选择。这个组件提供了一种用户友好的方式来从一组预定义的选项中进行选择。然而,根据你的标题和描述,你似乎遇到了一个特别的...

    EXTJS的COMBOBOX级联实现和数据提交VALUE[文].pdf

    EXTJS的ComboBox级联实现是Web应用程序中常见的一种交互方式,尤其在数据表单中用于联动选择。在本文中,我们将深入探讨EXTJS如何实现ComboBox的级联效果,并理解其数据提交VALUE的工作原理。 首先,我们需要创建两...

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

    很多网友在问,Extjs4.0 ComboBox如何实现,好在之前用3.x实现过一个三级联动,如今用Extjs4.0来实现同样的联动效果。其中注意的一点就是,3.x中的model:’local’在Extjs4.0中用queryMode: ‘local’来表示,而且在...

    extjs editgrid combobox 回显

    在探讨“extjs editgrid combobox 回显”这一主题时,我们主要关注的是如何在ExtJS框架下,实现编辑网格(EditGrid)中的组合框(ComboBox)的值能够正确地回显到网格中。这一功能对于那些需要用户在表单中选择数据...

    extjs 自动补全 模拟combobox

    Combobox由两部分组成:一个文本输入框和一个下拉列表。文本输入框允许用户输入值,而下拉列表则展示预定义的选项。在EXTJS中,你可以通过配置`store`来设置下拉列表的选项,`displayField`来指定显示的字段,`...

    Extjs学习笔记(-):ComboBox联动

    本篇学习笔记将深入探讨EXTJS中ComboBox的联动效果,即一个ComboBox的选择会触发另一个ComboBox的数据更新,以此来提供更丰富的交互体验。通过源码解析和工具应用,我们将了解如何构建和实现这种联动效果。 ...

    extJs4 ComboBox组合框实例

    extJs4 ComboBox 代码组合框实例,ComboBox 各个主要参数详细解释

    Extjs 轻松实现下拉框联动

    最近小弟做了Extjs实现实现下拉框联动的效果,参考了好久才学会,闲下来发一个简单的例子。。呵呵

    extjs ComboBox联动

    Extjs4---combobox联动实例

    Ext combobox 下拉多选框带搜索功能

    在IT行业中,Ext JS是一个广泛使用的JavaScript库,用于构建富客户端Web应用程序。它提供了一套丰富的组件,包括各种类型的输入控件,如ComboBox。在给定的标题“Ext ComboBox 下拉多选框带搜索功能”中,我们关注的...

    漂亮的Extjs+struts2实现联动下拉

    通过Struts2 Action获取和处理数据,使用ExtJS的ComboBox组件展示和交互,实现动态联动效果,并通过定制样式提升用户体验。这个项目对于理解如何在实际开发中整合这两种技术具有很好的参考价值。

    extjs3.x combobox智能联想

    8. `transform`:用于指定Combobox的HTML元素ID,这在需要将现有的HTML select元素转换为EXTJS Combobox时使用。 实现智能联想的关键在于编写自定义的查询事件处理函数,通过监听`beforequery`事件,我们可以对用户...

    无废话ExtJs 教程十[下拉列表:Combobox]

    在ExtJS中,下拉列表(Combobox)是常见的组件之一,它结合了输入框和下拉菜单的功能,允许用户进行选择或自由输入。本教程将深入探讨ExtJS中的Combobox组件,包括其基本用法、配置选项、事件处理和自定义功能。 1....

    Extjs中ComboBox加载并赋初值的实现方法

    在Extjs框架中,ComboBox组件是经常使用的组件之一,它允许用户在一个下拉列表中进行选择。当需要在ComboBox加载数据之后为其赋初值,且这个赋值操作需要在数据加载完成后才能进行,以确保用户体验的正确性时,需要...

    Extjs6中Combobox实现下拉多选

    该资源主要展示了在Extjs6中Combobox控件实现下拉选择多个数据的功能

Global site tag (gtag.js) - Google Analytics