课题_ExtJs_FormPanel

合集下载

Ext

Ext

序言ExtJS是一个很不错的Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b/s应用更加具有活力及生命力。

ExtJS是一个用javascript编写,与后台技术无关的前端ajax框架。

因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。

最近我们在几个应用都使用到了ExtJS,对公司以前开发的一个OA系统也正在使用ExtJS2.0进行改造,使得整个系统在用户体验上有了非常大的变化。

本教程记录了前段时间本人学习ExtJS的一些心得及小结,希望能帮助正在学习或准备学习ExtJS的朋友们快速走进ExtJS2.0的精彩世界。

教程包括ExtJS的新手入门、组件体系结构及使用、ExtJS中各控件的使用方法及示例应用等,是一个非常适合新手的ExtJS入门教程。

本教程主要是针对ExtJS2.0进行介绍,全部代码、截图等都是基于ExtJS2.0。

在学习了本教程后,可以下载这个基于ExtJS2.0开发的单用户Blog系统的源代码,这个系统是我们团队中的williamraym与大峡等人开发的一个演示系统,系统源码整体质量比较高,通过学习这套源代码相邻一定能提高您ExtJS的综合水平。

本教程比较适合ExtJS的新手作为入门教程及手册使用,并在我的博客/blog/lengyu/上进行发布;应一些朋友的要求,根据本教程的写作思路,我还编写了比本教程更为详细的《ExtJS实用开发指南》,包含详细的ExtJS框架使用方法、各个控件详细配置参数、属性、方法及事件介绍,与服务器端集成及一个完整的示例应用系统介绍等内容,适合想深入学习ExtJS或正在使用ExtJS进行开发朋友们使用。

该《指南》当前在作为VIP文档发布,供该站的VIP用户阅读及下载。

凡是购买了《ExtJS 实用开发指南》文档的VIP用户,都可以在该指南印刷版出版后均会免费得到相应的印刷版本。

最后,希望广大网友把阅读本教程中的发现的错误、不足及建议等反馈给我们,让我们一起共同学习、共同进步,下面让我们一起进入精彩的ExtJS世界吧。

EXTJS-表单-1

EXTJS-表单-1

HtmlEditor
• • • • • • • • • • • • var field = new Ext.form.HtmlEditor({ fieldLabel: '在线编辑器', enableAlignments: true, enableColors: true, enableFont: true, enableFontSize: true, enableFormat: true, enableLinks: true, enableLists: true, enableSourceEdit: true, fontFamilies: ['宋体', '黑体'] });
• • • •
allowBlank:输入是否允许为空 maxLength: 最大长度 minLength: 最小长度 vtype: 是Ext提供的一套默认的校验方案,一共 Ext 有四种方案:
Html原始的提交方式
• buttons: [{ • text: '按钮', • handler: function() { • form.getForm().getEl().dom.action = “result.jsp"; • form.getForm().getEl().dom.submit(); • } • }]
TextArea
• var field = new Ext.form.TextArea({ • width: 200, • grow: true, • preventScrollbars: true, • fieldLabel: 'empty', • allowBlank: false, • emptyText: '空', • maxLength: 50, • minLength: 10, • value: '第一行\n第二行\n第三行\n第四行' • });

ExtJS 配置和表格控件使用

ExtJS 配置和表格控件使用

ExtJS 配置和表格控件使用ExtJS是一套AJAX控件,本人认为,它是目前我见过最好最美的JS控件库,所以非常有学习和使用价值,如果你还没有接触过ExtJS或者压根对其不感兴趣,那么没有必要看下去了。

ExtJS是一套完整的RIA解决方案,也因为功能完整造成了ext-all.js有400多k,由于是基于JS和CSS的功能实现,对客户端机器性能也有一定的要求,即不支持IE6以下的版本。

如果您的项目对网页响应时间有严格的限制,或者客户端操作系统过于陈旧,一定不要选择ExtJS。

本文主要是介绍ExtJS的下载和配置以及一些简单的使用方法。

目前最新版本为3.0,但是本文主要介绍2.2版本。

一、 ExtJS下载以及配置1、下载地址:/(这是官网,大家可以选择自己喜欢的版本下载)2、配置过程,假设下载后的目录为Ext,我们在该目录下建立我们自己的目录MyExample(该目录用于存放你自己写的代码),配置过程如下:(1) 新建一个页面文件Helloworld.html(2) 在<head>和</head>之间添加如下代码:代码如下:<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">Ext.onReady(function(){Ext.MessageBox.alert('HelloWorld','Hello World');})</script>(3) 这里注意<script></script>不能用</script>取代(4) js的导入顺序不要更改(3) 如果弹出一个HelloWorld的对话框,则代表配置成功。

ExtJS—表单与输入控件

ExtJS—表单与输入控件

ExtJS—表单与输入控件表单在EXT中非常受欢迎,初看这些输入控件,好像只是修改了CSS样式而已,但是如果用Firebug查看一下DOM,似乎确实只有CSS发生了变化,隐藏在漂亮界面下的依然是原来的input控件,如果你想使用EXT提供的一些绚丽的功能,建议尝试EXT的表单(Form)和对应的输入控件。

本文就是简单介绍表单与输入控件的使用方法。

一、创建一个简单的表单1、具体配置信息参考上篇文章2、创建简单表单的实现代码如下所示:view plaincopy to clipboardprint?1.<mce:script type="text/javascript"><!--2.Ext.onReady(function(){3.var form=new Ext.form.FormPanel({4.defaultType:'textfield',belAlign:'right',6.title:'form',belWidth:50,8.frame:true,9.width:220,10.items:[{11.fieldLabel:' 文本框'12.}],13.buttons:[{14.text:'按钮'15.}]16.});17.form.render("div1");18.});19.20.// --></mce:script>3、注意HTML中无需定义太多东西,只需要定义个div id='div1'就可以实现,初始配置显然变得更紧凑,利用items和buttons指定包含的控件和按钮。

具体实现效果如图1所示。

图1 简单的表单二、FormPanel和BasicForm详解如上面的实例所示,我们需要定义一个Ext.form.FormPanel,然后在里面设置field,引入Ext.form.For mPanel 的最大好处就是利于布局,Ext.form.FormPanel继承了Ext.Panel,作为一个Panel,我们可以把Ext.form.FormPanel放到Ext.Viewport中作为整个页面布局的一部分,同时也可以利用items指定Ext.form.FormPanel内部的子组件。

Extjs控件属性

Extjs控件属性

Ext.form.TimeField:配置项:maxValue:列表中允许的最大时间maxText:当时间大于最大值时的错误提示信息minValue:列表中允许的最小时间minText:当时间小于最小值时的错误提示信息increment:两个相邻选项间的时间间隔,默认为15分钟format:显示格式,默认为“g:i A”。

一般使用“H:i:s”H:带前缀0的24小时i:带前缀0的分钟s:带前缀0的秒invalidText:当时间值非法时显示的提示信息altFormats:多个时间输入格式组成的字符串,不同的格式之间使用“|”进行分割Ext.form.FieldSetanimCollapse:动画折叠,默认为falsecheckboxToggle:设置是否显示字段集的checkbox选择框,默认为falsecheckboxName:指定字段集中用于展开或隐藏字段集面板的checkbox的名字,该属性只有在checkboxToggle为true时生效labelWidth:字段标签的宽度,可以级联到子容器layout:布局,默认为formExt.form.DateFiedmaxValue:允许选择的最大日期maxText:当日期大于最大值时的错误提示信息minValue:允许选择的最小时间minText:当日期小于最小值时的错误提示信息format:日期显示格式,默认为“m/d/y”,一般使用“Y-m-d”Y:四位年份m:带前缀0的月份d:带前缀0的日期y:两位年份n:不带前缀0的月份j:不带前缀0的日期w:星期的数字,0表示星期日,1代表星期一showToday:是否显示今天按钮,默认为truealtFormats:多个日期输入格式组成的字符串,不同的格式之间使用“|”进行分割,默认值为'm/d/Y|n/j/Y|n/j/y|m/j /y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d'disabledDates:禁止选择的日期组成的数组disabledDatesText:选择禁选日期时显示的提示信息disabledDays:禁止选择的星期组成的数组,0代表星期日,1代表星期一disabledDaysText:选择禁选星期时显示的提示信息invalidText:当日期值非法时显示的提示信息方法:getValue():取得日期值boBoxdisplayField:被显示在下拉框中的字段名editable:是否可编辑,默认为trueforceSelection:输入值是否严格为待选列表中存在的值。

ExtJs中表单formPanel的横向布局

ExtJs中表单formPanel的横向布局
items : [{
xtype :"textfield",
fieldLabel :"音乐最爱",
width : 50
}]
}, {
layout :"form",
columnWidth : 0.2,
items : [{
xtype :"textfield",
fieldLabel :"明星最爱",
width : 50
layout :"form",//整个大的表单是form布局
labelWidth : 65,
labelAlign :"right",
items : [{//行1
layout :"column",//从左往右的布局
items : [{
columnWidth : .3,//该列有整行中所占百分比
layout :"form",//从上往下的布局
}]
}, {
layout :"form",
columnWidth : 0.2,
items : [{
xtype :"textfield",
fieldLabel :"运动最爱",
width : 50
}]
}]
}],
buttonAlign :"center",
buttons : [{
text :"提交"
}, {
items : [{
xtype :"textfield",
fieldLabel :"姓",

ExtJS考核面试题

ExtJS考核面试题

挑战EXT每一题10分,总共220分。

1.请在空白处填写有且只有一行代码,调用doHandle函数,点击button后使控制台打印出:Hello World;Value is ExtJS。

既不可以写function匿名函数,再在函数内部调用doHandle 实现。

填写:function(){doHandle(“World”,”ExtJS”);}者零分!!!!function doHandle(name,value){console.debug("Hello "+name+" ; Value is "+value);}var btn = new Ext.Button({handler : ________________});2.调用ExtJS方法得到一个没有被使用,可使用的唯一id号。

3.实现在数字1前面增加1000个零,输出0000…….000001。

使用while,for等循环进行字符串相加”0”+”0”……+”0”+”1”实现者一律零分。

4.合并两个数组:var src = [1,2,3,4,5];var dest = [6,7,8,9];将两个数组合并为一个数组。

采用while,for,Ext.each等循环实现者零分。

5.将一个数组[1,2,3,4,5,6,7,8,9]转换为1@2@3@4@5@6@7@8@9输出。

采用while,for,Ext.each等循环用字符串相加者一律零分。

6.请写出AccordionLayout的配置简写,并用一句话或绘图描述布局呈现样式。

7.如何监听GridPanel的列点击事件?8.ExtJS中的所有控件都有afterrender事件,请问afterrender事件是什么时候触发的?9.ExtJS如何实现ajax并发访问,既同一时间发起多个ajax访问请求?10.后台返回前台有数据如下:[[id : 1,name : 9],[id : 2,name : 8],[id : 3,name : 7],[id : 4,name : 6],[id : 5,name : 5]]并加载到GridPanel中按id升序展示,如何使数据在返回到前台后,按照id降序排列。

ExtJS之FormPanel详细参数和公共事件

ExtJS之FormPanel详细参数和公共事件

ExtJS之FormPanel详细参数和公共事件一、FormPanel详细参数介绍1、layout : String此容器所使用的布局类型。

如不指定,则使用缺省的yout.ContainerLayout 类型。

当中有效的值可以是:accordion、anchor、border、cavd、column、fit、form 和table。

针对所选择布局类型,可指定#layoutConfig 进一步配置。

2、layoutConfig : Object选定好layout 布局后,其相应的配置属性就在这个对象上进行设置。

(即与#layout 配置联合使用)有关不同类型布局有效的完整配置信息,参阅对应的布局类:yout.Absoluteyout.Accordionyout.AnchorLayoutyout.BorderLayoutyout.CardLayoutyout.ColumnLayoutyout.FitLayoutyout.FormLayoutyout.TableLayout3、bufferResize : Boolean/Number当设置为true(100 毫秒)或输入一个毫秒数,为此容器所分配的布局会缓冲其计算的频率和缓冲组件的重新布局。

如容器包含大量的子组件或这样重型容器,在频繁进行高开销的布局时,该项尤为有用。

4、activeItem : String/Number组件id 的字符串,或组件的索引,用于在容器布局渲染时候的设置为活动。

例如,activeItem: 'item-1'或activeItem: 0 index 0 = 容器集合中的第一项)。

只有某些风格的布局可设置activeItem(如yout.Accordion、yout.CardLayout 和yout.FitLayout),以在某个时刻中显示一项内容。

相关内容请参阅yout.ContainerLayout#activeItem。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

表单时是web中常见的元素,Ext中的表单也是特别丰富的,接下来我们一块看看表单的相关内容。

还是先看一下代码和效果:
Ext.onReady(function(){
var fp=new Ext.form.FormPanel({ //注意:Ext.form.FormPanel=Ext.FormPanel
title:'用户登录',
width:300,
//height:250,
bodyStyle:'padding:5px 5px 0',
renderTo:'divFormPanel',
frame:true,//在此,这个属性就很重要了,如果不为true,你会看到下面的button和panel看起来是分开的
url:'login.aspx',//提交地址
method:'post',//提交方法
defaults:{ //在这里同一定义item中属性,否则需要各个指明
xtype:'textfield',
labelAlign:'left',
labelWidth:80,
width:100
},
items:[
{
fieldLabel:'用户名',
xtype:'textfield',//Ext基本类型,也可以用其对应的form元素代替
name:'userName',
id:'userName'
//width:100
},
{
fieldLabel:'密码',
//xtype:'textfield',//Ext基本类型,也可以用其对应的form元素代替
inputType:'password',
name:'userPwd',
id:'userPwd'
//width:100
}
],
buttonAlign:'center',//按钮对其方式
buttons:[
{
text:'确定'
},
{
text:'取消',
handler:function(){//点击取消按钮的操作事件
fp.hide();
}
}
]
});
});
FormPanel也比较好用,但是我认为我们有必要就上面xtype和inputType说几点。

大家其实很多时候会发现,在Ext组件中(对于所有容器组件[这里就是可以有子组件的组件])items里面基本上有两种存在形式,一种就是像上面一样我们直接以Json的形式进行配置;另一种就是既然items中是一个个item,我们可以定义一个对象放到里面,例如假设在一个panel中还有一个子panel,我们就可以直接var pn=new Ext.Panel({…});然后放到items中。

上面的话我再强调一下,它不仅仅针对FormPanel,而是对于所有容器组件都是这样。

不妨看一个例子,我觉得大家经常看到这样的代码:
var panel=new Ext.Panel({
renderTo:"divPanel",
title:"我的面板",
width:400,
height:300,
items:[
new Ext.Panel({title:'子panel1',html:'子panel1内容'}),
new Ext.Panel({title:'子panel2',html:'子panel2内容'})
]
});
以至于很多初学者认为像上面的代码不能够写成下面的形式:
var panel=new Ext.Panel({
renderTo:"divPanel",
title:"我的面板",
width:400,
height:300,
items:[
{…},
{…}
]
});
其实这是对于xtype不太了解的原因。

Ext中xtype和Class(类)是一一对应的,所以既然上面items中是panel对象,那么就有对应的xtype,事实上我们可以知道它对应"panel",那么既然是这样,上面的代码当然可以写成第第一种存在形式:
var panel=new Ext.Panel({
renderTo:"divPanel",
title:"我的面板",
width:400,
height:300,
items:[
{xtype:'panel',title:'子panel1',html:'子panel1内容'},
{xtype:'panel',title:'子panel2',html:'子panel2内容'}
]
});
事实上从本质上来讲上面两种情况是一样的,只是表现形式不同而已,那么对于上面的代码如何用第二种方式呢,你会问,像
{ fieldLabel:'用户名', xtype:'textfield',//Ext基本类型,也可以用其对应的form元素代替
name:'userName',id:'userName' //width:100 }这样的代码是什么对象呢?其实它对应的是"Ext.form.TextField"。

这里放上一张对应表:
好了,说了那么多xtype,inputType还没有说呢。

我们说xtype和class是对应的,当然表单中xtype和class都有inputType属性,而且最为有意思的是对于form中的元素inputType的取值范围是一样的,什么意思呢?我们还看例子(我们直接对上面的代码精简好了,这个例子中我们就用class形式好了):
var fp=new Ext.form.FormPanel({
title:'用户登录',
width:300,
bodyStyle:'padding:5px 5px 0',
renderTo:'divFormPanel',
frame:true,
items:[
new Ext.form.Radio({
boxLabel:'男',
name:'sex',
id:'male'
}),
new Ext.form.Radio({
boxLabel:'女',
name:'sex',
id:'sex_female'
})
]
});
上面这个例子很简单(不太好看,因为到这里还没有说到form中相关控件,所以没有在布局上花功夫),也很容易理解,就是Radio 控件吗。

但是我修改过inputType之后呢:
var fp=new Ext.form.FormPanel({
title:'用户登录',
width:300,
bodyStyle:'padding:5px 5px 0',
renderTo:'divFormPanel',
frame:true,
items:[
new Ext.form.Radio({
boxLabel:'男',
inputType:'textfield',
name:'sex',
id:'male'
}),
new Ext.form.Radio({
boxLabel:'女',
inputType:'file',
name:'sex',
id:'sex_female'
})
]
});
可以说上面的代码如果对于初学者来说肯定想不到一个radio变成了textfield,另一个变成了file。

不是创建的Radio对象吗?怎么成了其他的控件,这个就是Ext中inputType的特殊之处。

好了,就先到这里吧!。

相关文档
最新文档