首页 > 代码库 > 【ExtJS】简单布局应用
【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: 606 });
(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: 17 });
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] });
效果:
【ExtJS】简单布局应用