Extjs4表单布局经验
来源:互联网 发布:形式与政策网络课答案 编辑:程序博客网 时间:2024/05/16 10:29
在使用Extjs4的时候,对于表单设计的默认布局,在表单项很少的时候还是比较好用的。但是表单项多了以后就难免需要将表单分块、分类等等。Extjs4提供了vbox和hbox来处理这些。不过,其实有一些更加简单的方法来处理这种布局需求。
Extjs4的表单默认布局是纵向的,原form类型的布局,现在form关键字去掉了,这个布局就是默认布局了。
先上图:
这个图是冒险商人项目的其中一个form。用于装备信息提交。由于页面限制,如果只是用默认布局的话,在小显示器上就无法显示完全,以至于表单都无法正常插入数据。
后来我查阅了很多网上资料,又试了几次,每次浏览器都报undefined错。然后我就奇怪了。后来看到了原来Extjs4版本,去掉了布局类型‘form’,当layout设置为form的时候就会报错了。注意!
实现上图这个布局很简单。首先设置form的layout为‘column’类型的。然后加入3个panel到这个form的items里。再在每一个panel里面加入所设计的表单组件。这个panel不用设置layout,就使用默认的就ok。
form的整体代码如下:
addEquipForm = Ext.create('Ext.form.Panel',{id: 'addEquipForm',enctype:'multipart/form-data',fileUpload: true,bodyPadding: 5,height: '100%',width: '100%',region:'center',layout:'column',buttonAlign: 'left',items:[{xtype:'panel',border:false,frame:true,width:'30%',defaults:{labelSeparator:': ',labelWidth: 65,width: 200,allowBlank: true,labelAlign: 'top',cls: 'equipCls'},items:[{xtype: 'textfield',name: 'name',fieldLabel: '装备名称',allowBlank: false},{xtype: 'button',name: 'duplicate',text: 'check',width: 40,x: 165,y: 5,handler: function() {var form_t = Ext.getCmp('addEquipForm').getForm().getValues();var type = 0;var key = form_t.name;checkDuplicate(key,type);}},{xtype: 'numberfield',name: 'price',fieldLabel: '价格',width: 90,minValue: 0},{xtype: 'combo',width: 90,listConfig:{maxHeight: 100},name: 'equipUnit',fieldLabel: '单位',triggerAction: 'all',store: unitClass, //指定类型displayField: 'typeName',valueField: 'typeValue',queryMode: 'local',forceSelection: true,typeAhead: true,value: '万'},{xtype: 'numberfield',name: 'level',fieldLabel: '等级',width: 90,minValue: 0,maxValue: 200}]},{xtype:'panel',border:false,frame:false,width:'30%',defaults:{labelSeparator:': ',labelWidth: 65,width: 200,allowBlank: true,labelAlign: 'top',cls: 'equipCls'},items:[{xtype: 'fieldset',title: '限定职业',defaultType: 'radio',layout: 'anchor',flex: 1,defaults: {anchor: '100%',hideEmptyLabel: false},items: [{checked: true,fieldLabel:'选择职业', boxLabel: '全职业',name: 'profession',inputValue: '全职业',cls: 'equipRadioCls'},{boxLabel: '战士',name: 'profession',inputValue: '战士',cls: 'equipRadioCls'}, {boxLabel: '魔法师',name: 'profession',inputValue: '魔法师',cls: 'equipRadioCls'},{boxLabel: '弓箭手',name: 'profession',inputValue: '弓箭手',cls: 'equipRadioCls'},{boxLabel: '飞侠',name: 'profession',inputValue: '飞侠',cls: 'equipRadioCls'},{boxLabel: '海盗',name: 'profession',inputValue: '海盗',cls: 'equipRadioCls'},{boxLabel: '暗影双刀',name: 'profession',inputValue: '暗影双刀',cls: 'equipRadioCls'}]}]},{xtype:'panel',border:false,frame:false,width:'30%',defaults:{labelSeparator:': ',labelWidth: 65,width: 200,allowBlank: true,labelAlign: 'top',cls: 'equipCls'},items:[{xtype: 'combo',id: 'equipClass',width: 120,name: 'equipClass',fieldLabel: '所属大类',triggerAction: 'all', queryMode:'local', store:equipmentClass, valueField:'typeValue', displayField:'typeName',forceSelection: true,typeAhead: true},{xtype: 'combo',id: 'equipSubClass',width: 120,name: 'equipSubClass',listConfig:{maxHeight: 220},fieldLabel: '所属小类',triggerAction: 'all', queryMode:'local', store:equipmentSubClass, valueField:'value', displayField:'text'},{xtype: 'filefield',name: 'imagePath',fieldLabel: '图片',emptyText:'选择装备图片(32*32)',buttonText:'浏览'}]}],buttons:[{text: '保存装备数据',margins: '5 5 5 10',width: 60,height: 30,handler: function(){var form = this.up('form').getForm();if(form.isValid()){form.submit({url: 'AddEquipData',waitTitle: '请稍后',waitMsg: '保存装备记录...',success: function(fp, o) {Ext.MessageBox.alert('成功', '装备信息录入完成!');},failure: function(fp, o) {Ext.MessageBox.alert('失败', '无法录入装备信息!');}});}}}]});
当然,每一个panel里面还可以再具体分类,实现所需的效果。如图:
- Extjs4表单布局经验
- extjs4 formpanel 表单布局
- ExtJS4 表单横向布局
- extjs4布局
- Extjs4循序渐进(三)——表单及表单控件详解一(表单布局和基础控件 Text,Text...
- Extjs4.2经验
- Extjs4.0.7 提交表单
- extjs4 表单验证自定义
- Extjs4提交表单
- ExtJS4 Layout 布局
- Extjs4布局layout
- ExtJs4.1布局详解
- Extjs4布局layout
- Extjs4----border布局
- Extjs4---accordion布局
- Extjs4---card布局
- Extjs4----anchor布局
- Extjs4---absolute布局
- 内存越界的概念和调试方法
- 如何打jar包和运行jar包
- NPAPI开发详解,Windows版
- .Net 生成API文档(一)
- 二叉树转链表
- Extjs4表单布局经验
- Java多线程(三)之ConcurrentHashMap深入分析
- CoreData 执行executefetchrequest卡死解决办法
- Java多线程(四)之ConcurrentSkipListMap深入分析
- Java多线程(五)之BlockingQueue深入分析
- C++ 虚函数表解析
- 市场营销学4——市场调研与预测
- ExamSoftware介绍
- Java多线程(六)之Deque与LinkedBlockingDeque深入分析