本范例展示如何使用表单的各种组件。
下拉框组件展示了5种使用范例:普通下拉框、绑定HTML组件的下拉框、树形下拉框、分页下拉框、多选下拉框等。

??
?
- Ext.onReady(function(){ ??
- ????Ext.BLANK_IMAGE_URL?=?"/widgets/ext-2.2/resources/images/default/s.gif";? ??
- ????Ext.QuickTips.init(); ??
- ????Ext.form.Field.prototype.msgTarget?=?"qtip"; ??
- ??
- ????//component ??
- ????var?hiddenField?=?new?Ext.form.Hidden({ ??
- ????????name:?"hiddenField", ??
- ????????value:?"1"??
- ????}); ??
- ??
- ????var?usernameField?=?new?Ext.form.TextField({ ??
- ????????name:?"username", ??
- ????????fieldLabel:?"用户名", ??
- ????????allowBlank:?true, ??
- ????????blankText:?"请输入用户名!"??
- ????}); ??
- ??
- ????var?pwdField?=?new?Ext.form.TextField({ ??
- ????????name:?"password", ??
- ????????fieldLabel:?"密码", ??
- ????????allowBlank:?true, ??
- ????????blankText:?"请输入密码!", ??
- ????????inputType:?"password"??
- ????}); ??
- ??
- ????var?ageField?=?new?Ext.form.NumberField({ ??
- ????????name:?"age", ??
- ????????allowBlank:?true, ??
- ????????blankText:?"请输入年龄!", ??
- ????????fieldLabel:?"年龄", ??
- ????????allowDecimals:?false, ??
- ????????allowNegative:?false, ??
- ????????minValue:?18, ??
- ????????minText:?"年龄不能少于18", ??
- ????????maxValue:?100, ??
- ????????maxText:?"年龄不能大于100"??
- ????}); ??
- ??
- ????var?love1?=?new?Ext.form.Checkbox({ ??
- ????????name:?"love1", ??
- ????????boxLabel:?"打球", ??
- ????????inputValue:?"1"??
- ????}); ??
- ??
- ????var?love2?=?new?Ext.form.Checkbox({ ??
- ????????name:?"love2", ??
- ????????boxLabel:?"游泳", ??
- ????????inputValue:?"2"??
- ????}); ??
- ??
- ????var?love3?=?new?Ext.form.Checkbox({ ??
- ????????name:?"love3", ??
- ????????boxLabel:?"登山", ??
- ????????inputValue:?"3"??
- ????}); ??
- ??
- ????var?loveGroup?=?new?Ext.form.CheckboxGroup({ ??
- ????????name:?"love", ??
- ????????columns:?[80,?80,?1.0], ??
- ????????fieldLabel:?"爱好", ??
- ????????items:?[love1,?love2,?love3] ??
- ????}); ??
- ??
- ????var?sex1?=?new?Ext.form.Radio({ ??
- ????????name:?"sex1", ??
- ????????boxLabel:?"男", ??
- ????????inputValue:?"1"??
- ????}); ??
- ??
- ????var?sex2?=?new?Ext.form.Radio({ ??
- ????????name:?"sex1", ??
- ????????boxLabel:?"女", ??
- ????????inputValue:?"0"??
- ????}); ??
- ??
- ????var?sexGroup?=?new?Ext.form.RadioGroup({ ??
- ????????name:?"sex", ??
- ????????columns:?[80,?1.0], ??
- ????????fieldLabel:?"性别", ??
- ????????items:?[sex1,?sex2] ??
- ????}); ??
- ??
- ????//本地数据源的组合框 ??
- ????var?store?=?new?Ext.data.SimpleStore({ ??
- ????????fields:?["code",?"name"], ??
- ????????data:?[ ??
- ????????????["1",?"北京"], ??
- ????????????["5",?"上海"], ??
- ????????????["4",??"广东"] ??
- ????????] ??
- ????}); ??
- ????var?cmbProvince?=?new?Ext.form.ComboBox({ ??
- ????????id:?"cmbProvince", ??
- ????????hiddenName:?"province.id", ??
- ????????fieldLabel:?"省份", ??
- ????????resizable:?true, ??
- ????????editable:?false, ??
- ????????width:?100, ??
- ????????emptyText:?"请选择...", ??
- ????????store:?store, ??
- ????????valueField:?"code", ??
- ????????displayField:?"name", ??
- ????????triggerAction:?"all", ??
- ????????mode:?"local"??
- ????}); ??
- ??
- ????//远程数据源的组合框 ??
- ????var?store2?=?new?Ext.data.SimpleStore({ ??
- ????????fields:?["name"], ??
- ????????proxy:?new?Ext.data.HttpProxy({ ??
- ????????????url:?"../testForm!loadData.action"??
- ????????}) ??
- ????}); ??
- ??
- ????var?cmbManager?=?new?Ext.form.ComboBox({ ??
- ????????hiddenName:?"manager", ??
- ????????fieldLabel:?"经理", ??
- ????????editable:?false, ??
- ????????triggerAction:?"all", ??
- ????????mode:?"local", ??
- ????????maxHeight:?200, ??
- ????????store:?new?Ext.data.SimpleStore({fields:[],data:[[]]}), ??
- ????????onSelect:?Ext.emptyFn, ??
- ????????tpl:?"<tpl?for='.'><div?id='tree'></div></tpl>"??
- ????}); ??
- ??
- ????var?root?=?new?Ext.tree.TreeNode({ ??
- ????????nodeId:?1, ??
- ????????text:?"根节点", ??
- ????????expanded:?true??
- ????}); ??
- ????root.appendChild(new?Ext.tree.TreeNode({nodeId:2,?text:"节点A",?leaf:true})); ??
- ????root.appendChild(new?Ext.tree.TreeNode({nodeId:3,?text:"节点B",?leaf:true})); ??
- ??
- ????var?tree?=?new?Ext.tree.TreePanel({ ??
- ????????root:?root, ??
- ????????border:?false, ??
- ????????autoHeight:?true, ??
- ????????autoScroll:?true??
- ????}); ??
- ??
- ????tree.on("click",?function(node){??? ??
- ????????if(!node.isLeaf())?return;?//只能选择叶节点 ??
- ????????//下拉框的隐藏值 ??
- ????????if(cmbManager.hiddenField){ ??
- ????????????cmbManager.hiddenField.value?=?node.attributes.nodeId; ??
- ????????} ??
- ????????cmbManager.setRawValue(node.text);?//下拉框的显示值 ??
- ????????cmbManager.collapse();?//折叠下拉框 ??
- ????}); ??
- ??
- ????cmbManager.on("expand",?function(){?? ??
- ????????tree.render("tree");??? ??
- ????});? ??
- ??
- ????//分页远程数据源的组合框 ??
- ????var?store3?=?new?Ext.data.JsonStore({ ??
- ????????url:?"../testForm!loadData3.action", ??
- ????????totalProperty:?"totalNum", ??
- ????????root:?"books", ??
- ????????fields:?["id",?"name"] ??
- ????}); ??
- ????var?cmbBook?=?new?Ext.form.ComboBox({ ??
- ????????hiddenName:?"books", ??
- ????????fieldLabel:?"书籍", ??
- ????????store:?store3, ??
- ????????valueField:?"name", ??
- ????????displayField:?"name", ??
- ????????triggerAction:?"all", ??
- ????????mode:?"remote", ??
- ????????queryParam:?"books", ??
- ????????loadingText:?"正在装载数据...", ??
- ????????width:?180, ??
- ????????minChars:?1, ??
- ????????editable:?false, ??
- ????????listWidth:?250, ??
- ????????pageSize:?3 ??
- ????}); ??
- ??
- ????//HTML标准组件 ??
- ????var?cmbPass?=?new?Ext.form.ComboBox({ ??
- ????????hiddenName:?"status", ??
- ????????fieldLabel:?"是否有效", ??
- ????????triggerAction:?"all", ??
- ????????editable:?false, ??
- ????????width:?100, ??
- ????????transform:?"isPass", ??
- ????????lazyRender:?true??
- ????}); ??
- ??
- ????var?cmbTimes?=?new?Ext.form.TimeField({ ??
- ????????hiddenName:?"time", ??
- ????????fieldLabel:?"时间", ??
- ????????minValue:?"09:00", ??
- ????????minText:?"所选时间应大于{0}", ??
- ????????maxValue:?"18:00", ??
- ????????maxText:?"所选时间应小于{0}", ??
- ????????format:?"H时i分", ??
- ????????increment:?30, ??
- ????????invalidText:?"时间格式无效!", ??
- ????????maxHeight:?200, ??
- ????????width:?100, ??
- ????????value:?"09时00分", ??
- ????????editable:?false??
- ????}); ??
- ??
- ????var?cmbMonths?=?new?Ext.ux.MultiSelectCombo({ ??
- ????????hiddenName:?"months", ??
- ????????fieldLabel:?"月份", ??
- ????????maxHeight:?200, ??
- ????????editable:?false, ??
- ????????store:?[["201010","201010"],?["201009","201009"],?["201008","201008"],?["201007","201007"],?["201006","201006"]], ??
- ????????mode:?"local", ??
- ????????width:?180, ??
- ????????maxItemsCount:?3, ??
- ????????maxItemsCountText:?"最多只能选择三个选项!"??
- ????}); ??
- ??
- ????var?cmbBirths?=??new?Ext.form.DateField({ ??
- ????????name:?"births", ??
- ????????fieldLabel:?"出生日期", ??
- ????????disabledDays:?[0,6], ??
- ????????disabledDaysText:?"禁止选择周末!", ??
- ????????width:?100, ??
- ????????readOnly:?true, ??
- ????????format:?"Y-m-d", ??
- ????????invalidText:?"不是有效的日期值!"??
- ????}); ??
- ??
- ????var?fieldSet1?=?new?Ext.form.FieldSet({ ??
- ????????title:?"下拉框", ??
- ????????checkboxName:?"fieldSet1", ??
- ????????checkboxToggle:?true, ??
- ????????autoHeight:?true, ??
- ????????layout:?"table", ??
- ????????layoutConfig:?{ ??
- ????????????columns:?3 ??
- ????????}, ??
- ????????defaults:?{ ??
- ????????????style:"margin-left:8px;?margin-top:3px;?margin-right:8px;?margin-bottom:3px;?valign:top", ??
- ????????????layout:"form", ??
- ????????????labelAlign:?"right"??
- ????????}, ??
- ????????items:?[ ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbProvince]}, ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbManager]}, ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbBook]}, ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbPass]}, ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbTimes]}, ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbMonths]}, ??
- ????????????{rowspan:1,?colspan:1,?items:[cmbBirths]}] ??
- ????}); ??
- ??
- ????var?remarksField?=?new?Ext.form.TextArea({ ??
- ????????name:?"remarks", ??
- ????????fieldLabel:?"备注", ??
- ????????width:?400, ??
- ????????height:?80 ??
- ????}); ??
- ??
- ????var?form?=?new?Ext.form.FormPanel({ ??
- ????????id:?"frmAddUser", ??
- ????????title:?"新增用户", ??
- ????????autoWidth:?true, ??
- ????????autoHeight:?true, ??
- ????????frame:?true, ??
- ????????renderTo:?Ext.getBody(), ??
- ????????labelWidth:?70, ??
- ????????tbar:?toolbar, ??
- ????????items:?[hiddenField,?usernameField,?pwdField,?ageField,?loveGroup,?sexGroup,? ??
- ????????????fieldSet1,?remarksField], ??
- ????????url:?"../testForm!ajaxSubmitForm.action"??
- ????}); ??
- });??
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = "/widgets/ext-2.2/resources/images/default/s.gif";
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = "qtip";
//component
var hiddenField = new Ext.form.Hidden({
name: "hiddenField",
value: "1"
});
var usernameField = new Ext.form.TextField({
name: "username",
fieldLabel: "用户名",
allowBlank: true,
blankText: "请输入用户名!"
});
var pwdField = new Ext.form.TextField({
name: "password",
fieldLabel: "密码",
allowBlank: true,
blankText: "请输入密码!",
inputType: "password"
});
var ageField = new Ext.form.NumberField({
name: "age",
allowBlank: true,
blankText: "请输入年龄!",
fieldLabel: "年龄",
allowDecimals: false,
allowNegative: false,
minValue: 18,
minText: "年龄不能少于18",
maxValue: 100,
maxText: "年龄不能大于100"
});
var love1 = new Ext.form.Checkbox({
name: "love1",
boxLabel: "打球",
inputValue: "1"
});
var love2 = new Ext.form.Checkbox({
name: "love2",
boxLabel: "游泳",
inputValue: "2"
});
var love3 = new Ext.form.Checkbox({
name: "love3",
boxLabel: "登山",
inputValue: "3"
});
var loveGroup = new Ext.form.CheckboxGroup({
name: "love",
columns: [80, 80, 1.0],
fieldLabel: "爱好",
items: [love1, love2, love3]
});
var sex1 = new Ext.form.Radio({
name: "sex1",
boxLabel: "男",
inputValue: "1"
});
var sex2 = new Ext.form.Radio({
name: "sex1",
boxLabel: "女",
inputValue: "0"
});
var sexGroup = new Ext.form.RadioGroup({
name: "sex",
columns: [80, 1.0],
fieldLabel: "性别",
items: [sex1, sex2]
});
//本地数据源的组合框
var store = new Ext.data.SimpleStore({
fields: ["code", "name"],
data: [
["1", "北京"],
["5", "上海"],
["4", "广东"]
]
});
var cmbProvince = new Ext.form.ComboBox({
id: "cmbProvince",
hiddenName: "province.id",
fieldLabel: "省份",
resizable: true,
editable: false,
width: 100,
emptyText: "请选择...",
store: store,
valueField: "code",
displayField: "name",
triggerAction: "all",
mode: "local"
});
//远程数据源的组合框
var store2 = new Ext.data.SimpleStore({
fields: ["name"],
proxy: new Ext.data.HttpProxy({
url: "../testForm!loadData.action"
})
});
var cmbManager = new Ext.form.ComboBox({
hiddenName: "manager",
fieldLabel: "经理",
editable: false,
triggerAction: "all",
mode: "local",
maxHeight: 200,
store: new Ext.data.SimpleStore({fields:[],data:[[]]}),
onSelect: Ext.emptyFn,
tpl: "<tpl for='.'><div id='tree'></div></tpl>"
});
var root = new Ext.tree.TreeNode({
nodeId: 1,
text: "根节点",
expanded: true
});
root.appendChild(new Ext.tree.TreeNode({nodeId:2, text:"节点A", leaf:true}));
root.appendChild(new Ext.tree.TreeNode({nodeId:3, text:"节点B", leaf:true}));
var tree = new Ext.tree.TreePanel({
root: root,
border: false,
autoHeight: true,
autoScroll: true
});
tree.on("click", function(node){
if(!node.isLeaf()) return; //只能选择叶节点
//下拉框的隐藏值
if(cmbManager.hiddenField){
cmbManager.hiddenField.value = node.attributes.nodeId;
}
cmbManager.setRawValue(node.text); //下拉框的显示值
cmbManager.collapse(); //折叠下拉框
});
cmbManager.on("expand", function(){
tree.render("tree");
});
//分页远程数据源的组合框
var store3 = new Ext.data.JsonStore({
url: "../testForm!loadData3.action",
totalProperty: "totalNum",
root: "books",
fields: ["id", "name"]
});
var cmbBook = new Ext.form.ComboBox({
hiddenName: "books",
fieldLabel: "书籍",
store: store3,
valueField: "name",
displayField: "name",
triggerAction: "all",
mode: "remote",
queryParam: "books",
loadingText: "正在装载数据...",
width: 180,
minChars: 1,
editable: false,
listWidth: 250,
pageSize: 3
});
//HTML标准组件
var cmbPass = new Ext.form.ComboBox({
hiddenName: "status",
fieldLabel: "是否有效",
triggerAction: "all",
editable: false,
width: 100,
transform: "isPass",
lazyRender: true
});
var cmbTimes = new Ext.form.TimeField({
hiddenName: "time",
fieldLabel: "时间",
minValue: "09:00",
minText: "所选时间应大于{0}",
maxValue: "18:00",
maxText: "所选时间应小于{0}",
format: "H时i分",
increment: 30,
invalidText: "时间格式无效!",
maxHeight: 200,
width: 100,
value: "09时00分",
editable: false
});
var cmbMonths = new Ext.ux.MultiSelectCombo({
hiddenName: "months",
fieldLabel: "月份",
maxHeight: 200,
editable: false,
store: [["201010","201010"], ["201009","201009"], ["201008","201008"], ["201007","201007"], ["201006","201006"]],
mode: "local",
width: 180,
maxItemsCount: 3,
maxItemsCountText: "最多只能选择三个选项!"
});
var cmbBirths = new Ext.form.DateField({
name: "births",
fieldLabel: "出生日期",
disabledDays: [0,6],
disabledDaysText: "禁止选择周末!",
width: 100,
readOnly: true,
format: "Y-m-d",
invalidText: "不是有效的日期值!"
});
var fieldSet1 = new Ext.form.FieldSet({
title: "下拉框",
checkboxName: "fieldSet1",
checkboxToggle: true,
autoHeight: true,
layout: "table",
layoutConfig: {
columns: 3
},
defaults: {
style:"margin-left:8px; margin-top:3px; margin-right:8px; margin-bottom:3px; valign:top",
layout:"form",
labelAlign: "right"
},
items: [
{rowspan:1, colspan:1, items:[cmbProvince]},
{rowspan:1, colspan:1, items:[cmbManager]},
{rowspan:1, colspan:1, items:[cmbBook]},
{rowspan:1, colspan:1, items:[cmbPass]},
{rowspan:1, colspan:1, items:[cmbTimes]},
{rowspan:1, colspan:1, items:[cmbMonths]},
{rowspan:1, colspan:1, items:[cmbBirths]}]
});
var remarksField = new Ext.form.TextArea({
name: "remarks",
fieldLabel: "备注",
width: 400,
height: 80
});
var form = new Ext.form.FormPanel({
id: "frmAddUser",
title: "新增用户",
autoWidth: true,
autoHeight: true,
frame: true,
renderTo: Ext.getBody(),
labelWidth: 70,
tbar: toolbar,
items: [hiddenField, usernameField, pwdField, ageField, loveGroup, sexGroup,
fieldSet1, remarksField],
url: "../testForm!ajaxSubmitForm.action"
});
});
?