我的ExtJs学习之路1---认识Extjs的部分基本组件

从学校毕业了走向了工作岗位,来到了公司,公司用的前台页面框架是ExtJs,于是作为一个从JSP转向ExtJs的程序员记录下自己学习ExtJs的具体过程。

刚接触ExtJs,首先看的是ExtJsAPI文档,映入眼帘的是很多组件,以及各组件所对应的属性以及方法等。

ExtJs的官方下载地址是:http://www.sencha.com/products/extjs/ 

ExtJs是一个与后台开发语言无关的前台显示界面,是Ajax框架。

ExtJs提供了很多丰富的组件,如多选框,默认的按照列来排列,列显示的设定等等,页面显示也是很漂亮的。

首先接触的是ExtJs中的组件,比如:Ext.panel.Panel,Ext.form.Panel,Ext.grid.Panel

其中Ext.panel.Panel是一个容器,是一个具有特定功能和结构的组件,它继承了Ext.container.Container,可以使用layout来布局,默认的布局方式是一个一个的添加到panel中来。

Ext.form.Panel 是存放表单的组件

Ext.grid.Panel是用来存放grid的组件,grid是类似于表格的组件,用来显示信息,相比于表格,它提供了很多表格没有的功能,比如,隐藏列,默认情况下的排序等等。

个人理解:针对以上三种panel,采用的都是第二个是所对应的组件的名称,而后面的Panel是用来存放Panel前面组件的容器(个人理解)。

下面看一个实例,具体阐述上面三个组件的具体用法,首先看Ext.panel.Panel组件:

Ext.create('Ext.panel.Panel', {

   title: 'Hello',

   width: 200,

   html: '<p>World!</p>',

   renderTo: Ext.getBody()

});


 

 

这是一个最简单的Ext.panel.Panel,,定义了Panel的名称,宽度以及panel中显示的内容,renderTo:Ext.getBody()的含义是当页面条用<body>的时候会加载这个createpanel

 

var filterPanel = Ext.create('Ext.panel.Panel',{

bodyPadding:5,  

width: 300,

   title: 'Filters',

   items: [{

       xtype: 'datefield',

       fieldLabel: 'Start date'

   }, {

       xtype: 'datefield',

       fieldLabel: 'End date'

   }],

   renderTo: Ext.getBody()

});


 

这是一个将时间组件放入Panel的实例,将定义的组件放到items数组中,其中数组中的每一个数据时用大括号来包含的,xtype是指所定义的子组件的类型,fieldLabel类似于html页面的label标签,bodyPadding是为了避免Panel中定义的这些日期组件会紧邻边框。

考虑到Ext.panel.Panel中的布局类似于流布局,没有特定的样式,UI看起来会比较丑,引入了layout属性,其中常用的layout有以下几种:

1.absolute子元素相对于父元素的绝对定位。定义x,y属性来对panel中组件的绝对定位。

2. accordion 属于折叠式的布局

3. borderjava中的border布局一样,分Northsourth,eastwest,center

4. card Panel中像卡片一样切换每一个子元素,而每一个子元素都填充整个Panel

5.fit 这种布局情况下Panel中只有一个子项,并且填满整个panel

6.table 表格布局方式,在做报表显示的时候常用

7.vbox  把所有的元素纵向排成一列

8.hbox 把所有的元素横向排成一列

9.anchor 这个布局就是表单面板默认支持的,每一项占据一行,支持用anchor配置项分配各个子项的高度和宽度。为百分比时表示当前大小占父容器的百分比,为数字的时一般为负数,表示父容器的值减去差值,剩下的为子项的大小。

(具体实例的应用详见:http://www.cnblogs.com/lipan/archive/2011/12/27/2302719.html

Ext.form.Panel功能的阐述:

Formpanel是一个标准的表单容器,主要是用于表单的部分操作。

下面是一个从API上贴出来的最简单的form示例:

Ext.create('Ext.form.Panel',{

    title: 'Simple Form', 

    bodyPadding: 5, //子组件靠近边框的距离

    width: 350,

    // 将会通过 AJAX 请求提交到此URL

    url: 'save-form.php',

    // 表单域 Fields 将被竖直排列, 占满整个宽度

    layout: 'anchor',  //form的布局方式

    defaults: {

        anchor: '100%'

    },

    defaultType: 'textfield', //后面用到的全部是textfield

    items: [{

        fieldLabel: 'First Name',

        name: 'first',

        allowBlank: false

    },{

        fieldLabel: 'Last Name',

        name: 'last',

        allowBlank: false

    }],

    // 重置和保存按钮.

    buttons: [{

        text: '重置',

//绑定组件的动作

        handler: function() {

            this.up('form').getForm().reset();

        }

    }, {

        text: '保存',     

        disabled: true,

        handler: function() {

            var form =this.up('form').getForm();

            if (form.isValid()) {

                form.submit({

                    success: function(form,action) {

                       Ext.Msg.alert('保存成功', action.result.msg);

                    },

                    failure: function(form,action) {

                        Ext.Msg.alert('操作失败', action.result.msg);

                    }

                });

            }

        }

    }],

    renderTo: Ext.getBody()

});


 

 

这是一个简单的信息保存的页面。

Ext.grid.Panel

Grid是显示大量数据的极佳方式,本质上是表格,但是是表格的进化。

Gird包括两部分,一个部分是store部分和渲染部分。

API上简单的示例:

Ext.create('Ext.data.Store',{

    storeId:'simpsonsStore',

    fields:['name', 'email', 'phone'],

    data:{'items':[

        { 'name': 'Lisa', "email":"lisa@simpsons.com",  "phone":"555-111-1224"  },

        { 'name': 'Bart', "email":"bart@simpsons.com",  "phone":"555-222-1234" },

        { 'name': 'Homer',"email":"home@simpsons.com",  "phone":"555-222-1244"  },

        { 'name': 'Marge',"email":"marge@simpsons.com","phone":"555-222-1254" }

    ]},

    proxy: {

        type: 'memory',

        reader: {

            type: 'json',

            root: 'items'

        }

    }

});

 

Ext.create('Ext.grid.Panel',{

    title: 'Simpsons',

    store:Ext.data.StoreManager.lookup('simpsonsStore'),

    columns: [

        { header: 'Name',  dataIndex: 'name' },

        { header: 'Email', dataIndex: 'email',flex: 1 },

        { header: 'Phone', dataIndex: 'phone' }

    ],

    height: 200,

    width: 400,

    renderTo: Ext.getBody()

});


 

 

Store是用来存储数据的,在grid中加载已经定义的stroestore中的数据会填充到grid中的columns中来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值