【ExtJS】简单布局应用
前几天学习了ExtJS的各种布局后,以下就是各种实践,从简单做起。
实现目的:
一个提交表单页,一个显示信息页,表单为个人基本资料输入,显示页为基本信息展示。
内容:
总体布局为border布局,展示页为west,提交表单为center。展示页可折叠,默认为折叠状态。
1、展示页用一个panel展示。可折叠,默认为折叠状态。点击提交后展示,点击关闭后关闭。
1 var show = Ext.create(‘Ext.panel.Panel‘,{ 2 region: ‘west‘, 3 title: ‘Show‘, 4 width: 150, 5 margin: ‘5 2 5 5‘, 6 collapsible: true, 7 collapsed: true, 8 });
collapsed默认为折叠状态。
2、表单页。内容有:姓名输入、性别选择、出生日期、职务、备注。分别用到5种组件。
(1) 姓名输入:组件选择Textfield。
1 var form_name = Ext.create(‘Ext.form.TextField‘,{ 2 id: ‘form_name‘, 3 name: ‘name‘, 4 fieldLabel: ‘Name‘, 5 labelWidth: 60 6 });
(2) 性别选择:组件选择RadioGroup.
1 var form_sex = Ext.create(‘Ext.form.RadioGroup‘,{ 2 name: ‘sex‘, 3 fieldLabel: ‘Sex‘, 4 columns: 2, 5 vertical: true, 6 labelWidth: 60, 7 items: [ 8 {boxLabel: ‘Man‘, id: ‘man‘, name: ‘sex‘, inputValue: ‘1‘}, 9 {boxLabel: ‘Woman‘, id: ‘woman‘, name: ‘sex‘, inputValue: ‘2‘} 10 ] 11 });
(3) 出生日期:组件选择Date.
1 var form_dateTime = Ext.create(‘Ext.form.Date‘,{ 2 id: ‘form_date‘, 3 name: ‘dateTime‘, 4 fieldLabel: ‘DateTime‘, 5 labelWidth: 60, 6 editable: false, 7 maxValue: new Date() 8 });
(4) 职务:组件选择ComboBox.
1 var form_work = Ext.create(‘Ext.form.ComboBox‘,{ 2 id: ‘form_work‘, 3 name: ‘work‘, 4 fieldLabel: ‘Work‘, 5 labelWidth: 60, 6 editable: false, 7 store: new Ext.data.Store({ 8 fields: [‘position‘,‘value‘], 9 data: [ 10 {‘position‘: ‘Engineer‘, ‘value‘: ‘1‘}, 11 {‘position‘: ‘Boss‘, ‘value‘: ‘2‘}, 12 {‘position‘: ‘director‘, ‘value‘: ‘3‘} 13 ] 14 }), 15 queryMode: ‘local‘, 16 displayField: ‘position‘, 17 valueField: ‘value‘ 18 });
(5) 备注:组件选择TextArea.
1 var form_remark = Ext.create(‘Ext.form.TextArea‘,{ 2 id: ‘form_remark‘, 3 name: ‘remark‘, 4 fieldLabel: ‘Remark‘, 5 labelWidth: 60, 6 flex: 1 7 });
Form其子组件布局选择为vbox,vbox配置控件宽度与父组件宽度一样。
下面加2个按钮,按钮位置可以设置buttonAlign来定位,这里默认设置靠右。
关于控件值的获取,通过各自id来获取控件,然后通过getValue()获取值,其中RadioGroup控件通过各自id获取控件,获取的值为true和false,采用三目运算符进行转换输出。最后comboBox组件获取值为getRawValue().
除了最后备注控件,其他控件高度为默认高度,将textArea加个属性flex: 1,表示剩余高度由textArea填满。
信息的展示使用update( String/Object htmlOrData, [Boolean loadScripts], [Function callback] )方法更新。
1 var form = Ext.create(‘Ext.form.Panel‘,{ 2 title: ‘Form‘, 3 region: ‘center‘, 4 border: true, 5 id: ‘formId‘, 6 margin: ‘5 2 5 5‘, 7 layout: { 8 type: ‘vbox‘, 9 align: ‘stretch‘ 10 }, 11 items: [form_name,form_sex,form_dateTime,form_work,form_remark], 12 buttons: [{ 13 text: ‘Save‘, 14 handler: function(){ 15 var name = Ext.getCmp(‘form_name‘).getValue(); 16 var sex = Ext.getCmp(‘man‘).getValue() ? ‘man‘ : ‘woman‘; 17 var dateTime = Ext.getCmp(‘form_date‘).getValue(); 18 var work = Ext.getCmp(‘form_work‘).getRawValue(); 19 var remark = Ext.getCmp(‘form_remark‘).getValue(); 20 21 show.update(‘<p1>name: </p1>‘ + name + ‘<br />‘ + ‘Sex: ‘ + sex + ‘<br />‘ + ‘DateTime: ‘ + Ext.Date.format(dateTime, ‘Y-m-d‘) + ‘<br />‘ + ‘Work: ‘ + work + ‘<br />‘ + ‘remark: ‘ + remark); 22 } 23 },{ 24 text: ‘Cancel‘, 25 handler: function(){ 26 show.update(); 27 } 28 }] 29 });
最后将两个结合起来:
var message = Ext.create(‘Ext.panel.Panel‘,{ title: ‘Message Layout‘, titleAlign: ‘center‘, layout: ‘border‘, width: 500, height: 400, border: true, renderTo: Ext.getBody(), items: [show,form] });
效果:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。