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 相关文章推荐
JavaScript Undefined,Null类型和NaN值区别
Oct 22 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
javascript简单性能问题及学习笔记
Feb 04 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
JQuery实现防止退格键返回的方法
Feb 12 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
DOM中事件处理概览与原理的全面解析
Aug 16 Javascript
浅谈Angular的$q, defer, promise
Dec 20 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 30 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
Python for i in range ()用法详解
2020/09/18 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
优秀员工个人的自我评价
2013/11/29 职场文书
新学期班主任寄语
2014/01/18 职场文书
会计工作决心书
2014/03/11 职场文书
授权委托书格式模板
2014/04/03 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技