0 0

Extjs4 二级联动下拉框0

我想做一个二级联动下拉框,但是firebug报错!

后台数据为:system/majorAndClass?departmentId=2


后台数据为:system/department!quryAllDepartments

register.js 如下:
Ext.Loader.setConfig({
    enabled: true
});
Ext.Loader.setPath('Ext.ux', 'js/ux');

Ext.require([
    //'Ext.form.*',
    //'Ext.layout.container.Column',
    //'Ext.tab.Panel'
    '*',
    'Ext.ux.DataTip'
]);

Ext.onReady(function() {
    Ext.QuickTips.init();

    var bd = Ext.getBody();

    var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';
	// 性别store
	var sexStrore = Ext.create('Ext.data.Store', {
	    fields: ['sex','id'],
	    data : [{"sex":"男", "id":"0"},
	            {"sex":"女", "id":"1"}]
	        });
	//公用model
	Ext.define('model',{extend:'Ext.data.Model',
					    fields:[{name:'id',mapping:'id',type:'int'},
					            {name:'name',mapping:'name',type:'string'}]}
			  );
	//加载部门的数据
	var departmentStore = Ext.create('Ext.data.Store',{
			model:'model',
			proxy:{
				type:'ajax',
				url:'system/department!quryAllDepartments',
				reader:{
					type:'json',
					root:'departments'
				}
			},
			autoLoad:true,
		    remoteSort:true						
		}
	);
	//加载专业的数据
	var majorStore = Ext.create('Ext.data.Store',{
				model:'model',
				proxy:{
					type:'ajax',
					url: "system/majorAndClass", 
					reader:{
						type:'json',
						root:'majorAndClasses'
					}
				},
				autoLoad: false,
			    remoteSort:true						
			}
	);
    var simple = Ext.widget({
        xtype: 'form',
        layout: 'form',
        collapsible: true,
        id: 'register',
        url: 'save-form.php',
        frame: true,
        title: '用户注册',
        bodyPadding: '5 5 0',
        width: '500',
        fieldDefaults: {
            msgTarget: 'side',
            labelWidth: 75,
            allowBlank: false
        },
        plugins: {
            ptype: 'datatip'
        },
        defaultType: 'textfield',
        items: [{
            fieldLabel: '账号',
            afterLabelTextTpl: required,
            name: 'number',
            
            tooltip: '输入你的账号!',
            emptyText:'学号或者工号'
        },{
            fieldLabel: '姓名',
            afterLabelTextTpl: required,
            name: 'name',
            tooltip: '请输入你的姓名!'
        },{
            fieldLabel: '密码',
            name: 'password',
            afterLabelTextTpl: required,
            tooltip: "请输入密码"
        }, {
            fieldLabel: 'Email',
            name: 'email',
            allowBlank: false,
            vtype:'email',
            tooltip: '请输入你的邮箱地址'
        }, {
            fieldLabel: '性别',
            name: 'sex',
            xtype: 'combo',
            store: sexStrore,
            queryMode: 'local',
		    displayField: 'sex',
		    valueField: 'id',
            tooltip: '请选择性别!'
        }, {
            fieldLabel: '出生日期',
            name: 'birthday',
            xtype: 'datefield',
            tooltip: '输入出生日期'
        }, {
            fieldLabel: '联系电话',
            name: 'phone',
            tooltip: '请输入你的电话!'
        },{
            fieldLabel: '地址',
            name: 'address',
            tooltip: '请输入你的地址!'
        },{
    	    xtype:"combo", 
    	    width : 200,  
	        fieldLabel : "院系部门",  
	        name : "department",  
	        id: "departmentId",  
	        editable: false,  
	        allowBlank: false,
    	    displayField:'name',
    	    valueField:'id',
    	    store:departmentStore,
    	    triggerAction:'all',
    	    queryMode:'local',
    	    selecOnFocus:true,
    	    forceSelection:true,
    	    allowBlank:false,
    	    editable:true,
    	    listConfig : {loadingText : '正在加载类型信息', emptyText: "请选择院系部门", blankText:'请选择院系部门', maxHeight : 100},
    	    listeners:{
    		   select:function(combo,record,index){
    			   try{
    				   var m = Ext.getCmp('majorAndClass');
	    			   m.clearValue();
	    			   m.store.load(
	    					{params:{departmentId:combo.getValue()}}   
	    			             );
    			   }catch(ex){
    				   alert("数据加载失败!");
    			   }
    		   }
    	   }
       },{
    	   xtype:"combo",
    	   fieldLabel : "专业班级",  
           name : "majorAndClass",  
           id: "majorAndClass",  
    	   fieldLabel:'选择专业班级',
    	   displayField:'name',
    	   valueField:'id',
    	   store:majorStore,
    	   triggerAction:'all',
    	   queryMode:'local',
    	   emptyText:'请选择院系部门',
    	   blankText:'请选择院系部门'
    	  
       }],

        buttons: [{
            text: 'Save',
            handler: function() {
                this.up('form').getForm().isValid();
            }
        },{
            text: 'Cancel',
            handler: function() {
                this.up('form').getForm().reset();
            }
        }]
    });

    simple.render(document.getElementById("register"));


    
});


为什么会出错呢》?该怎样解决?

问题补充:谢谢大家关注,今天我再次运行时就正确啦!不知是咋回事?MyEclipse?ExtJS4?反正是能运行啦!
2013年12月08日 16:48
  • 大小: 3.8 KB
  • 大小: 10.9 KB
  • 大小: 15.5 KB

1个答案 按时间排序 按投票排序

0 0

departmentStore  和 majorStore  都没声明fields

2013年12月09日 09:31

相关推荐

    Extjs 轻松实现下拉框联动

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

    ExtJS Combobox二级联动列子

    下面我们将详细讨论如何在ExtJS中实现Combobox的二级联动。 一、基础概念 1. Combobox:ExtJS中的Combobox是FormPanel的一个字段,它结合了文本输入框和下拉列表,提供了一种选择或输入数据的方式。 2. 二级联动:...

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

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

    EXTJS 选下拉框,并取得下拉框的值

    在EXTJS中,下拉框(ComboBox)是一种常见的UI组件,常用于用户选择一个或多个预定义的选项。本篇文章将详细讲解如何在EXTJS中操作下拉框,以及如何获取用户选定的值。 首先,创建一个基本的EXTJS下拉框需要定义`...

    Extjs3.4.0版本 多选下拉框效果支持多选/全选/全不选

    在ExtJS 3.4.0版本中,多选下拉框(Multiselect Combobox)是一种常见的用户界面组件,用于提供多个选项供用户选择。这个功能增强了标准的单选下拉框,允许用户同时选择多个条目,通常通过复选框实现。在描述中提到...

    JSP页面下拉框三级联动

    下拉框三级联动是指在用户选择第一级下拉框选项时,第二级下拉框根据第一级的选择动态更新显示内容;同理,第三级下拉框也会根据第二级的选择进行相应的更新。这种设计可以极大地简化用户在选择多级分类数据时的操作...

    extjs 复选下拉框的例子

    在IT领域,特别是前端开发中,ExtJS是一个广泛使用的JavaScript框架,用于构建复杂的企业级Web应用程序。本文将深入探讨如何在ExtJS中实现复选下拉框(Multiselect ComboBox),并提供一个具体示例,帮助开发者更好...

    ExtJs学习例子:多级联动下拉菜单演示例子

    一共3个文件: ...getData.asp data.mdb 前台采用ExtJs 2.2.1编写(由于库文件比较大,考虑到大家本机都有了,所以在此没有上传,大家直接改一下路径即可),后台采用asp+access...本例子演示的4级联动菜单:州+国家+城市+地区

    extjs多选 下拉框扩展

    在ExtJS中,下拉框(ComboBox)是常见的UI组件,通常用于显示一个可选的列表。然而,标准的ExtJS下拉框只支持单选模式。为了实现多选功能,我们需要对其进行扩展。这个“extjs多选 下拉框扩展”就是解决这个问题的一...

    extjs的ComboBox 2级联动

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

    jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

    本文将详细讲解如何使用JSP从数据库获取数据来填充下拉框,进而实现二级联动菜单。 首先,我们需要在JSP页面中创建第一个下拉框,用于展示一级菜单。这个下拉框的数据是从数据库中获取的。例如: ```jsp listKey...

    Ext二级联动完整例子

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

    最简单的下拉框联动不刷新页面示例

    通过这种方式,实现了下拉框联动,当用户在第一个下拉框中选择一个选项时,第二个下拉框会动态更新其内容,而不会刷新整个页面。这在`WebApplication1`项目中是一个很好的实践,展示了如何在不牺牲用户体验的前提下...

    Ext combo 下拉框级联

    实现级联下拉框的核心在于数据的联动和更新。这通常通过监听第一个下拉框的选中事件来完成,当用户在父级ComboBox中选择一个项时,会触发一个事件,这个事件可以用来更新子级ComboBox的数据源。在Ext JS中,可以通过...

    extjs表单中的下拉框(comobobox)手动添加空选项

    ### ExtJS表单中的下拉框(ComboBox)手动添加空选项 在开发Web应用程序时,ExtJS 是一个非常强大的库,它提供了丰富的组件和API来帮助开发者构建复杂的用户界面。其中一个常用的组件就是`ComboBox`(组合框),它...

    Extjs 下拉菜单实现拼音输入进行检索

    Extjs 下拉菜单实现拼音输入进行检索

    Extjs4 下拉树 TreeCombo

    ExtJS 4 下拉树(TreeCombo)是一种组合控件,它将传统的下拉框与树形结构结合在一起,提供了一种在有限空间内展示层级数据的高效方式。这种控件在很多场合都非常实用,例如在需要用户选择分类或者层级结构的场景中...

    extjs多选下拉框

    在EXTJS框架中,"多选下拉框"(Multi-Select ComboBox)是一种常见的组件,它允许用户在下拉列表中选择多个选项。EXTJS 3.*版本也提供了这种功能,使得开发者能够创建功能丰富的界面,提升用户体验。下面将详细解释...

    Extjs3 多选下拉框LovCombo

    在ExtJS 3中,多选下拉框(LovCombo)是一种复合组件,它结合了下拉列表和“爱好者选择”(LOV,Lookup Value)的功能,允许用户在多个选项中进行复选选择。在Web应用中,这种组件常用于数据输入,特别是在数据库...

Global site tag (gtag.js) - Google Analytics