Extjs学习笔记之三 extjs form更多的表单项


Posted in Javascript onJanuary 07, 2010

1.日期选择框,DateField
日期选择框在日常项目中被广泛应用,一个方便的日期输入机制能够极大的提高用户体验。Extjs的DateField非常友好灵活强大。可以通过如下代码新建一个日期选择框:

new Ext.form.DateField({ 
id: 'diliveryDate', 
format: 'Y年m月d日', 
maxValue: new Date(), 
minValue: '1900-01-01', 
disabledDays: [0, 6], 
disabledDaysText: '禁止选择该日期', 
fieldLabel: '选择日期', 
width:200, 
showToday:false 
})

效果如下:
Extjs学习笔记之三 extjs form更多的表单项 
注意,默认情况下,这个日历显示的是英文,如果需要显示中文,需要引入区域文件:
<script type="text/javascript" src="ext-3.1.0/src/locale/ext-lang-zh_CN.js"></script>对其他控件应该也是类似的。2.HTML编辑器,HTMLEditor
HTML编辑器可以使客户编辑html文档。启用HTML编辑器非常简单,而且几乎不需要额外的配置,默认的就很好用:
new Ext.form.HtmlEditor({ 
id:'HtmlContent', 
autoHeight:false, 
width:500, 
fieldLabel:'HTML编辑' 
})

Extjs学习笔记之三 extjs form更多的表单项 
遗憾的是这个编辑器不支持图文混排,不过对于轻量级的应用来说还是很好用的。如果需要图文混排还是使用专门的第三方的插件好了。

3.组合框, ComboBox
这是一个重量级的控件,因为它在实际应用中起着广泛而重要的作用。虽然它的使用频率没有TextField高,但是它的功能却比TestField丰富的多,所以把它放在比较靠后的位置来介绍。Extjs的ComboBox具有下拉提示,自动完成等功能,也同时支持本地和服务器端的数据源。下面先看一个本地数据源的示例。

本地数据源可以放在一个ArrayStore中,这是一个类似一个数组的结构。例如,可以定义下面的store:

var store = new Ext.data.ArrayStore({ 
fields: ['Name', 'Code'], 
data: [['开发部', 1], ['行政部', 2], ['销售部', 3], ['质检部', 4], ['售后部', 5]] 
});下面就可以添加一个combobox,var myform = new Ext.FormPanel({ 
applyTo: 'myform', 
title: 'ComboxBox with local datasource', 
height: 200, 
width: 300, 
frame: true, 
labelSeparator: ':', 
labelWidth: 60, 
labelAlign: 'right', 
items: [new Ext.form.ComboBox({ 
id:'combolocal', 
fieldLabel:'部门', 
triggerAction:'all', 
store:store, 
displayField:'Name', 
mode:'local', 
forceSelection:true, 
typeAhead:true, 
resizable:true}) 
] 
});

其中比较重要的配置项有displayField,对应的是datastore中的fields,用来指定显示哪个字段。mode,在这里是local,表示本地数据源。typeAhead表示是否自动完成,forceSelection表示是否仅允许用户输入下拉列表中有的数据。效果如下,下图展示了自动完成,我仅在输入框中输入了一个“开”字:
Extjs学习笔记之三 extjs form更多的表单项 
使用远程数据也是类似的,不过我们首先要准备好一个能够返回数据的服务器页面,新建一个combo.ashx代码如下:
public class combo : IHttpHandler { 
public void ProcessRequest (HttpContext context) { 
string query = context.Request.Params["search"]; 
StringBuilder sb = new StringBuilder("["); 
foreach (string s in data) 
if (s.Contains(query)||query=="all") sb.Append(s+","); 
if(sb[sb.Length-1]==',') 
sb.Remove(sb.Length - 1, 1); 
sb.Append("]"); 
context.Response.ContentType = "text/plain"; 
context.Response.Write(sb.ToString()); 
} 
string[] data=new string[]{"['开发部', 1]","['行政部', 2]", "['销售部', 3]", "['质检部', 4]", "['售后部', 5]"}; public bool IsReusable { 
get { 
return false; 
} 
}}

此段程序根据客户端传来的参数进行筛选,再传回数据,如果参数值是all,则返回全部数据。可见服务器端的自动完成可以比本地的更自由,当然速度也会更慢。这个例子中服务器传回的一个符合格式的javascript数组,在实际开发中,有更好的数据传送格式可以选择,本文的讨论重点不是数据的传递,因此就直接采用这种方式作为示例。接下来配置下客户端的datastore:
var remoteStore=new Ext.data.ArrayStore({ 
fields: ['Name', 'Code'], 
proxy:new Ext.data.HttpProxy({url:'Combo.ashx'}) 
});最后就可以创建一个使用远程数据源的combobox了:new Ext.form.ComboBox({ 
id: 'comboremote', 
allQuery:'all', 
fieldLabel: '远程部门', 
triggerAction: 'all', 
mode: 'remote', 
queryParam:'search', 
displayField:'Name', 
store:remoteStore, 
minChars:1})

其中minChars表示用户至少要输入多少字后才开始自动完成,queryParam是向服务器传递参数的名字,allQuery是要求返回全部数据时候的参数值。效果如下:
Extjs学习笔记之三 extjs form更多的表单项
在remote模式下,combobox还支持服务器端分页,此时combox会向服务器传递start和limit参数,表示要显示的数据范围,服务器端代码做相应处理后返回数据即可。
Javascript 相关文章推荐
很棒的学习jQuery的12个网站推荐
Apr 28 Javascript
使用jquery实现图文切换效果另加特效
Jan 20 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
javascript在myeclipse中报错的解决方法
Oct 29 Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
Feb 15 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
vue裁切预览组件功能的实现步骤
May 04 Javascript
Extjs学习笔记之二 初识Extjs之Form
Jan 07 #Javascript
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 #Javascript
jQuery DOM操作小结与实例
Jan 07 #Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
Jan 05 #Javascript
jQuery 数据缓存data(name, value)详解及实现
Jan 04 #Javascript
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 #Javascript
Javascript解决常见浏览器兼容问题的12种方法
Jan 04 #Javascript
You might like
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php不写闭合标签的好处
2014/03/04 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
JavaScript 学习笔记(六)
2009/12/31 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
微信小程序实现tab页面切换功能
2018/07/13 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
Python随机读取文件实现实例
2017/05/25 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
pytorch简介
2020/11/11 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
小学三年级数学教学反思
2014/01/31 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
婚前协议书标准版
2014/10/19 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang