<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Ext Buttons</title> <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/> <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../../ext-all.js"></script> <script type="text/javascript" src="../examples.js"></script> <script type="text/javascript"> Ext.onReady(function(){ //Ext.form.TextField var textField = new Ext.form.TextField( { fieldLabel:'用户名', allowBlank:false,//不允许为空 emptyText:'请填写用户名',//输入为空时提示的默认信息 maxLength:10,//限制输入的数据在5-10之间 minLength:5, } ); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[textField], renderTo:'form' } ); } ); </script> </head> <body> <div id = "form" style = "width:700px;"> </div> <br> </body> </html>
//Ext.form.TextArea var textArea = new Ext.form.TextArea( { width:200,//宽度 grow:true,//当值为 true 时表示字段可以根据内容自动伸缩 preventScrollbars:true,//防止出现滚动条,如果超出会自动隐藏 fieldLabel:'自我介绍', allowBlank:false,//不允许为空 emptyText:'空',//输入为空时提示的默认信息 maxLength:100,//限制输入的数据在10-100之间 minLength:10, } ); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[textArea], renderTo:'form' } );
当grow:false preventScrollbars:false时如果内容超出显示范围会出现滚动条
//Ext.form.DateField var dateField = new Ext.form.DateField( { fieldLabel:'生日', emptyText:'请选择',//输入为空时提示的默认信息 format:'Y-m-d',//用以覆盖本地化的默认日期格式化字串 disableDays:[0,6]//一个以字串形式表示的禁用的日期数组 } ); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[dateField], renderTo:'form' } );
//Ext.form.TimeField var timeField = new Ext.form.TimeField( { fieldLabel:'时间', emptyText:'请选择',//输入为空时提示的默认信息 minValue:'10:30 AM',//起始时间 maxValue:'14:00 PM',//结束时间 increment:30//时间间隔为30分钟 } ); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[timeField], renderTo:'form' } );
//Ext.form.HtmlEditor var htmlEditor = new Ext.form.HtmlEditor( { fieldLabel:'留言', enableAlignments:true,//允许居左、居中、居右按钮(默认为 true)。 enableColors:true,//允许前景/高亮颜色按钮 enableFontSize:true,//允许增大/缩小字号按钮(默认为 true)。 enableFont:true,//允许字体选项。 enableFormat:true,//允许粗体、斜体和下划线按钮(默认为 true)。 enableLinks:true,//允许创建链接按钮。 enableLists:true,//允许项目和列表符号按钮。 enableSourceEdit:true,//允许切换到源码编辑按钮。 } ); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[htmlEditor], renderTo:'form' } );
//ComboBox var data = [ ['0','学生'], ['1','教师'], ['2','工程师'], ['3','农民'] ]; var store = new Ext.data.SimpleStore( { fields:['value','text'], data:data } ); var combo = new Ext.form.ComboBox( { store:store,//store用来为ComboBox提供数据 emptyText:'请选择', triggerAction:'all',//query 会根据输入信息自动匹配 all 显示所有数据 mode:'local',//在本地读取数据 valueField:'value',//与store定义中的名字一样。正是根据他们之间的对应关系来显示数据。 displayField:'text', applyTo:'combo',//显示位置,需要与<input id = "combo" type = "text">对应 value:'学生'//设置默认值 } );
监听事件:
var ReportFaultTypeSchoolCbox = new Ext.form.ComboBox({ fieldLabel: '校区', width:200, editable: false, //不允许输入 name: 'School', id: "School", hiddenName: "reportFaultTypeSchool", store: ReportFaultTypeSchoolStore, emptyText: '--请选择--', allowBlank: false, //不允许为空 blankText: '请选择校区', //错误提示信息 mode: 'remote', displayField: 'reportFaultTypeName', valueField: 'reportFaultTypeId', triggerAction: 'all' }); //监听事件 ReportFaultTypeSchoolCbox.on("select",function(comboBox){ alert(comboBox.getValue()+"-"+comboBox.getRawValue()); });
//select转换成ComboBox var comboFromSelect = new Ext.form.ComboBox( { emptyText:'请选择', triggerAction:'all',//query 会根据输入信息自动匹配 all 显示所有数据 mode:'local',//在本地读取数据 transform:'comboFS' } );
<select id = "comboFS"> <option value = "0">苹果</option> <option value = "1">葡萄</option> <option value = "2">香蕉</option> <option value = "3">菠萝</option> </select>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Ext Buttons</title> <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/> <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../../ext-all.js"></script> <script type="text/javascript" src="../examples.js"></script> <script type="text/javascript"> Ext.onReady(function(){ Ext.QuickTips.init(); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[ { xtype:'fieldset', title:'选择你喜欢的运动', autoHeight:true, defaultType:'checkbox', hideLabels:true, items:[ {boxLabel:'足球',inputValue:'1'}, {boxLabel:'篮球',inputValue:'2'}, {boxLabel:'乒乓球',inputValue:'3'}, {boxLabel:'羽毛球',inputValue:'4'} ] } ], renderTo:'form' } ); } ); </script> </head> <body> <div id = "form" style = "width:700px;"> </div> </body> </html>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Ext Buttons</title> <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/> <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../../ext-all.js"></script> <script type="text/javascript" src="../examples.js"></script> <script type="text/javascript"> Ext.onReady(function(){ Ext.QuickTips.init(); //Ext.form.FormPanel var form = new Ext.form.FormPanel( { title:'表单控件', frame:true, items:[ { xtype:'fieldset', title:'性别', autoHeight:true, defaultType:'radio', hideLabels:true, items:[ {boxLabel:'男',inputValue:'1',checked:true,name:'radio'}, {boxLabel:'女',inputValue:'2',name:'radio'}, ] } ], renderTo:'form' } ); } ); </script> </head> <body> <div id = "form" style = "width:700px;"> </div> </body> </html>
监听事件:
{ xtype:"fieldset", title: "附件", layout:"form", autoHeight:true, style:'padding-left:10px;', items:[ { xtype:'radiogroup', fieldLabel: '是否上传附件', defaultType:'radio', id:'RadioGroup', hideLabels:true, items:[ {boxLabel:'是',inputValue:'1',name:'radio'}, {boxLabel:'否',inputValue:'2',name:'radio',checked:true} ], listeners: { "change": function() { alert("value:"+Ext.getCmp("RadioGroup").getValue().inputValue); } } } ] }
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Ext Buttons</title> <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/> <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../../ext-all.js"></script> <script type="text/javascript" src="../examples.js"></script> <script type="text/javascript"> Ext.onReady(function(){ //工作+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var dataWork = [ ['0','学生'], ['1','教师'], ['2','工程师'], ['3','农民'] ]; var storeWork = new Ext.data.SimpleStore( { fields:['value','text'], data:dataWork } ); var comboWork = new Ext.form.ComboBox( { fieldLabel:'工作', store:storeWork,//store用来为ComboBox提供数据 emptyText:'请选择', triggerAction:'all',//query 会根据输入信息自动匹配 all 显示所有数据 mode:'local',//在本地读取数据 valueField:'value',//与store定义中的名字一样。正是根据他们之间的对应关系来显示数据。 displayField:'text', value:'学生'//设置默认值 } ); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Ext.form.DateField var birthdayField = new Ext.form.DateField( { fieldLabel:'生日', emptyText:'请选择',//输入为空时提示的默认信息 format:'Y-m-d',//用以覆盖本地化的默认日期格式化字串 disableDays:[0,6],//一个以字串形式表示的禁用的日期数组 name:'birthday', } ); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var sexField = new Ext.form.ComboBox( { fieldLabel:'性别', name:'sex', store:new Ext.data.SimpleStore( { fields:['value','text'], data:[ ['0','男'], ['1','女'] ] } ),//store displayField:'text', valueField:'value', mode:'local', emptyText:'请选择', } ); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var userField = new Ext.form.TextField( { fieldLabel:'用户名', allowBlank:false,//不允许为空 emptyText:'请填写用户名',//输入为空时提示的默认信息 maxLength:10,//限制输入的数据在5-10之间 minLength:5, name:'username', } ); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var passwordField = new Ext.form.NumberField( { fieldLabel:'密码', allowBlank:false,//不允许为空 emptyText:'请填写密码',//输入为空时提示的默认信息 name:'password', } ); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var textArea = new Ext.form.TextArea( { width:200,//宽度 grow:false,//当值为 true 时表示字段可以根据内容自动伸缩 preventScrollbars:false,//防止出现滚动条,如果超出会自动隐藏 fieldLabel:'自我介绍', allowBlank:false,//不允许为空 emptyText:'空',//输入为空时提示的默认信息 maxLength:100,//限制输入的数据在10-100之间 minLength:10, } ); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Ext.form.FormPanel var form = new Ext.form.FormPanel( { labelAlign:'right', labelWidth:50, title:'用户注册', frame:true, width:650, items:[ { layout:'column', items:[ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ { columnWidth:.7, layout:'form', defaultType:'textfield', defaults:{width:300}, autoHeight:true, xtype:'fieldset', title:'基本信息', items:[ userField, passwordField, sexField, birthdayField, comboWork, textArea, ]//items }, //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ { columnWidth:.3, layout:'form', items:[ { xtype:'fieldset', title:'你喜欢的运动?', autoHeight:true, defaultType:'checkbox', style:'margin-left:10px;', bodyStyle:'margin-left:10px;', items:[ {boxLabel:'足球',name:'check',value:'1',checked:true}, {boxLabel:'篮球',name:'check',value:'2'}, {boxLabel:'羽毛球',name:'check',value:'3'}, {boxLabel:'乒乓球',name:'check',value:'4'}, ] }, { xtype:'fieldset', title:'你喜欢听音乐吗?', autoHeight:true, defaultType:'radio', style:'margin-left:10px;', bodyStyle:'margin-left:10px;', items:[ {boxLabel:'YES',name:'radio',value:'1',checked:true}, {boxLabel:'NO',name:'radio',value:'2'}, ] }, ]//items } ]//items }, { layout:'form', labelAlign:'top', items:[ { xtype:'htmleditor', fieldLabel:'留言', id:'editor', anchor:'98%', } ] } ],//items buttons:[ {text:'保存'}, {text:'读取'}, {text:'取消'}, ], renderTo:'form' } ); } ); </script> </head> <body> <div id = "form"> </div> </body> </html>
添加数据与修改数据的操作时相辅相成的。如果进行修改还是使用原来的表单,我们需要做的就是在表单显示时为每个控件赋予对应的数据。我们知道Ext.form.Field都有setValue()函数,可以设置表单中对应控件的数据。这样会出现一个问题:每个控件都取出来,然后再赋值,另外很多数据要进行类型的转换,实在是很麻烦。
我们不在使用setValue()函数而是使用了Ext.data.JsonReader来负责数据的读取和转换操作。
后台传过来的数据是只有一个元素的JSON数组,如下:
[{ text:’textField’, number:12.34, date:’2008-01-01 00:00:00’, combo:1 }]
这里提供了字符串,数字,日期等类型的数据,表单中需要配置对应的reader,如下:
var reader = new Ext.data.JsonReader( {}, [ {name:’text’,type:’string’}, {name:’number’,type:’float’}, {name:’date’,type:’date’,dateFormat:’Y-m-dTH:i:s’}, {name:’combo’,type:’int’}, ] );
现在我们将设置好的reaer放到表单中,后台返回的JSON会在这里被JsonReader转换成对应的数据类型,供表单使用:
var form = new Ext.form.FormPanel( { title:’form’, frame:’true’, labelWidth:50, reader:reader, items:[ { xtype:’textfield’, name:’text’ } ] } );
当调用form.load()函数时,表单会使用Ajax去后台读取需要的数据。如果调用load()时没有使用任何参数,load()函数就会使用表单对应的url参数。不过表单中设置的url一般是提交数据的网址,为了不将提交和读取这两个操作混在一起,我们建议另外定义一个专门用来读取数据的url,如下:
{ text:’读取’, handler:function(){ form.getForm().load({url:’json.txt’}); } }
现在我们为load()传递一个url参数,指定读取数据的网址。这个网址返回的信息就是上面提到的用于向表单填充数据的JSON字符串,这样就实现了自动为表单中的各个组件填充数据的功能。
//var win = new Ext.Window({}):创建一个新的Window窗体对象。 var win = new Ext.Window({ title: "查看报障", //窗体的标题 iconCls: 'bzcl', //一个能提供背景图片的CSS样式类,用于面板头部的图标 width: 400, //宽度 autoHeight:true,//高度,自适应 closeAction: 'close',//当关闭按钮被点击时执行的动作 "close"释放窗体所占内存,"hide"隐藏窗体 plain: true,//true表示强制与背景色保持协调 modal:true,//屏蔽其他控件,只有这个窗体可操作 draggable: false,//是否可拖动 closable: true,//是否可关闭 maximizable:true,//是否可以最大化 minimizable:true,//是否可以最小化 resizable: true,//是否可以调整窗体大小 layout: "form", items: [ form ] });