<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_lipan</title><subtitle type="text">"好好的学习，珍惜每一寸光阴"</subtitle><id>http://feed.cnblogs.com/blog/u/63145/rss</id><updated>2011-12-29T14:09:02Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/63145/rss"/><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/27/2302719.html</id><title type="text">ExtJs4 笔记（14） layout 布局</title><summary type="text">《回到系列目录本篇讲解Ext另一个重要的概念：布局。一般的容器类控件都是通过配置项items添加子控件的，这些子控件相对于父控件怎么定位呢，这里就要用到布局。某些容器类控件，它本身默认就集成了一种布局方式，例如比较典型的是：Ext.container.Viewport 布局控件，它其实就是一个border布局的容器，还有Ext.form.Panel、Ext.tab.Panel等。本节我们系统的分析各种布局方式。一、absolute这种方式的布局可以对子元素相对于父级容器控件进行绝对定位，它包含了x、y两个配置项用于定位。我们来看看一个例子：[Js] //absolute Ext.c...</summary><published>2011-12-27T00:24:00Z</published><updated>2011-12-27T00:24:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/27/2302719.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/27/2302719.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇讲解Ext另一个重要的概念：布局。一般的容器类控件都是通过配置项items添加子控件的，这些子控件相对于父控件怎么定位呢，这里就要用到布局。某些容器类控件，它本身默认就集成了一种布局方式，例如比较典型的是：Ext.container.Viewport 布局控件，它其实就是一个border布局的容器，还有Ext.form.Panel、Ext.tab.Panel等。本节我们系统的分析各种布局方式。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、absolute&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这种方式的布局可以对子元素相对于父级容器控件进行绝对定位，它包含了x、y两个配置项用于定位。&lt;/p&gt;&lt;p&gt;我们来看看一个例子：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //absolute&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div1',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'absolute',&lt;br/&gt;        items: [{&lt;br/&gt;            title: '面板1',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素1",&lt;br/&gt;            width: 200,&lt;br/&gt;            height: 100,&lt;br/&gt;            x: 50,&lt;br/&gt;            y: 50&lt;br/&gt;&lt;br/&gt;        }, {&lt;br/&gt;            title: '面板2',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素2",&lt;br/&gt;            width: 200,&lt;br/&gt;            height: 100,&lt;br/&gt;            x: 100,&lt;br/&gt;            y: 80&lt;br/&gt;&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700401322.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、accordion&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;有的js插件里面accordion都是一个ui控件，但是Ext是通过布局的方式实现的，我们可以用面板控件作为它的折叠项，并且还可以用js来翻动活动项。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //accordion&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div2',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'accordion',&lt;br/&gt;        items: [{&lt;br/&gt;            tools: [{ type: 'gear', handler: function () {&lt;br/&gt;                Ext.Msg.alert('提示', '配置按钮被点击。');&lt;br/&gt;            }&lt;br/&gt;            }, { type: 'refresh'}],&lt;br/&gt;            title: '面板1',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素1"&lt;br/&gt;&lt;br/&gt;        }, {&lt;br/&gt;            title: '面板2',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素2"&lt;br/&gt;        }, {&lt;br/&gt;            id: 'panel3',&lt;br/&gt;            title: '面板3',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素3"&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: 'div2',&lt;br/&gt;        text: "打开第三页",&lt;br/&gt;        handler: function () {&lt;br/&gt;            Ext.getCmp('panel3').expand(true);&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700405623.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、anchor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局就是表单面板默认支持的，每一项占据一行，支持用anchor配置项分配各个子项的高度和宽度。为百分比时表示当前大小占父容器的百分比，为数字的时一般为负数，表示父容器的值减去差值，剩下的为子项的大小。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //anchor&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div3',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'anchor',&lt;br/&gt;        items: [{&lt;br/&gt;            tools: [{ type: 'gear', handler: function () {&lt;br/&gt;                Ext.Msg.alert('提示', '配置按钮被点击。');&lt;br/&gt;            }&lt;br/&gt;            }, { type: 'refresh'}],&lt;br/&gt;            title: '面板1',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素1",&lt;br/&gt;            anchor: '80% 20%'&lt;br/&gt;&lt;br/&gt;        }, {&lt;br/&gt;            title: '面板2',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素2",&lt;br/&gt;            anchor: '-50 -200'&lt;br/&gt;        }, {&lt;br/&gt;            title: '面板3',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素3",&lt;br/&gt;            anchor: '100% 30%'&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700414284.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、border&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局可以定义东南西北四个方向的子元素，还有一个居中的子元素，一般用它来做页面整页布局，所以Ext.container.Viewport默认就支持了这个布局方式。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //border&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div4',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'border',&lt;br/&gt;        defaults: {&lt;br/&gt;            split: true,                 //是否有分割线&lt;br/&gt;            collapsible: true,           //是否可以折叠&lt;br/&gt;            bodyStyle: 'padding:15px'&lt;br/&gt;        },&lt;br/&gt;        items: [{&lt;br/&gt;            region: 'north',            //子元素的方位：north、west、east、center、south&lt;br/&gt;            title: '北',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素1",&lt;br/&gt;            height: 70&lt;br/&gt;        }, {&lt;br/&gt;            region: 'west',&lt;br/&gt;            title: '西',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素2",&lt;br/&gt;            width: 100&lt;br/&gt;&lt;br/&gt;        }, {&lt;br/&gt;            region: 'east',&lt;br/&gt;            title: '东',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素2",&lt;br/&gt;            width: 100&lt;br/&gt;&lt;br/&gt;        }, {&lt;br/&gt;            region: 'center',&lt;br/&gt;            title: '主体',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素3"&lt;br/&gt;        }, {&lt;br/&gt;            region: 'south',&lt;br/&gt;            title: '南',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素4",&lt;br/&gt;            height: 70&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700422215.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、card&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局可以像卡片一样的切换每个子元素，各个子元素都会独占父元素的容器空间。我们可以定义翻页按钮来控制当前处于活动状态的子元素。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //card&lt;br/&gt;    var cardNav = function (incr) {&lt;br/&gt;        var l = Ext.getCmp('cardPanel').getLayout();&lt;br/&gt;        var i = l.activeItem.id.split('card')[1];&lt;br/&gt;        var next = parseInt(i, 10) + incr;&lt;br/&gt;        l.setActiveItem(next);&lt;br/&gt;        Ext.getCmp('cardPrev').setDisabled(next === 0);&lt;br/&gt;        Ext.getCmp('cardNext').setDisabled(next === 2);&lt;br/&gt;    };&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div5',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'card',&lt;br/&gt;        activeItem: 1,                  //默认活动项&lt;br/&gt;        id: 'cardPanel',&lt;br/&gt;        items: [{&lt;br/&gt;            id: 'card0',&lt;br/&gt;            title: '面板1',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素1"&lt;br/&gt;&lt;br/&gt;        }, {&lt;br/&gt;            id: 'card1',&lt;br/&gt;            title: '面板2',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素2"&lt;br/&gt;        }, {&lt;br/&gt;            id: 'card2',&lt;br/&gt;            title: '面板3',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            html: "子元素3"&lt;br/&gt;        }],&lt;br/&gt;        bbar: ['-&amp;gt;', {&lt;br/&gt;            id: 'cardPrev',&lt;br/&gt;            text: '&amp;laquo; 前一页',&lt;br/&gt;            handler: Ext.Function.bind(cardNav, this, [-1])&lt;br/&gt;        }, {&lt;br/&gt;            id: 'cardNext',&lt;br/&gt;            text: '后一页 &amp;raquo;',&lt;br/&gt;            handler: Ext.Function.bind(cardNav, this, [1])&lt;br/&gt;        }]&lt;br/&gt;&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700430166.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六、column&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局把子元素按照列进行划分。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //column&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div6',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'column',&lt;br/&gt;        defaults: {                     //设置没一列的子元素的默认配置&lt;br/&gt;            layout: 'anchor',&lt;br/&gt;            defaults: {&lt;br/&gt;                anchor: '100%'&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        items: [{&lt;br/&gt;            columnWidth: 4 / 10,        //设置列的宽度&lt;br/&gt;            items: [{&lt;br/&gt;                title: '面板1',&lt;br/&gt;                border: false,&lt;br/&gt;                html: '子元素1'&lt;br/&gt;            }, {&lt;br/&gt;                title: '面板2',&lt;br/&gt;                border: false,&lt;br/&gt;                html: '子元素2'&lt;br/&gt;            }]&lt;br/&gt;        }, {&lt;br/&gt;            width: 120,&lt;br/&gt;            items: [{&lt;br/&gt;                title: '面板3',&lt;br/&gt;                border: false,&lt;br/&gt;                html: '子元素3'&lt;br/&gt;            }]&lt;br/&gt;        }, {&lt;br/&gt;            columnWidth: .40,&lt;br/&gt;            items: [{&lt;br/&gt;                title: '面板4',&lt;br/&gt;                border: false,&lt;br/&gt;                html: '子元素4'&lt;br/&gt;            }]&lt;br/&gt;        }]&lt;br/&gt;&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700435234.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七、fit&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局下子元素会独占全部的容器空间，一般用于只有一个子项的情况。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //fit&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div7',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        items: [{&lt;br/&gt;            title: '面板',&lt;br/&gt;            html: '子元素',&lt;br/&gt;            border: false&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700442173.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;八、table&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局用表格定位的方式去组织子元素，我们可以像表格一样设置rowspan和colspan。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //table&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div8',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: {&lt;br/&gt;            type: 'table',&lt;br/&gt;            columns: 4&lt;br/&gt;        },&lt;br/&gt;        defaults: { frame: true, width: 70, height: 50 },&lt;br/&gt;        items: [&lt;br/&gt;            { html: '元素1', rowspan: 3, height: 150 },&lt;br/&gt;            { html: '元素2', rowspan: 2, height: 100 },&lt;br/&gt;            { html: '元素3' },&lt;br/&gt;            { html: '元素4' },&lt;br/&gt;            { html: '元素5', colspan: 2, width: 140 },&lt;br/&gt;            { html: '元素6' },&lt;br/&gt;            { html: '元素7' },&lt;br/&gt;            { html: '元素8' }&lt;br/&gt;        ]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700444998.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;九、vbox&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个布局把所有的子元素按照纵向排成一列。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //vbox&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div9',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: {&lt;br/&gt;            type: 'vbox',&lt;br/&gt;            pack: 'start',              //纵向对齐方式 start：从顶部；center：从中部；end：从底部&lt;br/&gt;            align: 'stretchmax'             //对齐方式 center、left、right：居中、左对齐、右对齐；stretch：延伸；stretchmax：以最大的元素为标准延伸&lt;br/&gt;        },&lt;br/&gt;        defaults: {&lt;br/&gt;            xtype: 'button'&lt;br/&gt;        },&lt;br/&gt;        items: [{&lt;br/&gt;            text: '小按钮',&lt;br/&gt;            flex: 1                      //表示当前子元素尺寸所占的均分的份数。&lt;br/&gt;        }, {&lt;br/&gt;            xtype: 'tbspacer',          //插入的空填充&lt;br/&gt;            flex: 3&lt;br/&gt;        },&lt;br/&gt;&lt;br/&gt;        {&lt;br/&gt;            text: '中按钮',&lt;br/&gt;            scale: 'medium'&lt;br/&gt;        }, {&lt;br/&gt;            text: '大按钮',&lt;br/&gt;            width: 120,&lt;br/&gt;            scale: 'large',&lt;br/&gt;            flex: 1&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700451718.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;十、hbox&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;跟vbox类似，只不过变成了横向的。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //hbox&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        title: '容器面板',&lt;br/&gt;        renderTo: 'div10',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        layout: {&lt;br/&gt;            type: 'hbox',&lt;br/&gt;            pack: 'end',&lt;br/&gt;            align: 'middle'             //对齐方式 top、middle、bottom：顶对齐、居中、底对齐；stretch：延伸；stretchmax：以最大的元素为标准延伸&lt;br/&gt;        },&lt;br/&gt;        defaults: {&lt;br/&gt;            xtype: 'button'&lt;br/&gt;        },&lt;br/&gt;        items: [{&lt;br/&gt;            text: '小按钮'&lt;br/&gt;        },{&lt;br/&gt;            text: '中按钮',&lt;br/&gt;            scale: 'medium'&lt;br/&gt;        }, {&lt;br/&gt;            text: '大按钮',&lt;br/&gt;            width: 120,&lt;br/&gt;            scale: 'large'&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122700455239.jpg" alt="" /&gt;&lt;/p&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2302719.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/27/2302719.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/26/2301426.html</id><title type="text">ExtJs4 笔记（13） Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更</title><summary type="text">《回到系列目录本篇讲解菜单、绘图、还有大小变更控件。菜单控件可以附加到各种其他控件中，比如按钮、工具栏等，甚至可以直接通过通过右键打开（模拟右键菜单）；ext对绘图的支持可以让我们通过js来绘图；大小变更控件可以让各种html元素获取可变更大小的能力。下面我们一一详细介绍。一、Ext.menu.Menu 菜单1.菜单的定义下面我们来定义一个菜单，它包括一个下拉列表，还有颜色选择器，日期选择器等菜单项。[Js] //下定义一个下拉列表 var combo = Ext.create('Ext.form.ComboBox', { store: new Ext.data.Ar...</summary><published>2011-12-26T00:16:00Z</published><updated>2011-12-26T00:16:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/26/2301426.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/26/2301426.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇讲解菜单、绘图、还有大小变更控件。菜单控件可以附加到各种其他控件中，比如按钮、工具栏等，甚至可以直接通过通过右键打开（模拟右键菜单）；ext对绘图的支持可以让我们通过js来绘图；大小变更控件可以让各种html元素获取可变更大小的能力。下面我们一一详细介绍。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、Ext.menu.Menu 菜单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.菜单的定义&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面我们来定义一个菜单，它包括一个下拉列表，还有颜色选择器，日期选择器等菜单项。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //下定义一个下拉列表&lt;br/&gt;    var combo = Ext.create('Ext.form.ComboBox', {&lt;br/&gt;        store: new Ext.data.ArrayStore({&lt;br/&gt;            fields: ['id', 'name'],&lt;br/&gt;            data: [[1, "张三"], [2, "李四"], [3, "王五"], [4, "赵六"]]&lt;br/&gt;        }),&lt;br/&gt;        displayField: 'name',&lt;br/&gt;        typeAhead: true,&lt;br/&gt;        mode: 'local',&lt;br/&gt;        triggerAction: 'all',&lt;br/&gt;        emptyText: '请选择..',&lt;br/&gt;        selectOnFocus: true,&lt;br/&gt;        width: 135&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //这里是菜单的定义&lt;br/&gt;    var menu = Ext.create('Ext.menu.Menu', {&lt;br/&gt;        id: 'mainMenu',&lt;br/&gt;        style: {&lt;br/&gt;            overflow: 'visible'&lt;br/&gt;        },&lt;br/&gt;        items: [&lt;br/&gt;            combo,&lt;br/&gt;            {&lt;br/&gt;                text: '复选框',&lt;br/&gt;                checked: true&lt;br/&gt;            }, '-', {&lt;br/&gt;                text: '单选子菜单',&lt;br/&gt;                menu: {&lt;br/&gt;                    items: [&lt;br/&gt;                        '&amp;lt;b&amp;gt;请选择一个人名&amp;lt;/b&amp;gt;',&lt;br/&gt;                        {&lt;br/&gt;                            text: '张三',&lt;br/&gt;                            checked: true,&lt;br/&gt;                            group: 'theme'&lt;br/&gt;                        }, {&lt;br/&gt;                            text: '李四',&lt;br/&gt;                            checked: false,&lt;br/&gt;                            group: 'theme',&lt;br/&gt;                            checkHandler: function () {&lt;br/&gt;                                Ext.MessageBox.alert("消息", "李四被选择！")&lt;br/&gt;                            }&lt;br/&gt;                        }, {&lt;br/&gt;                            text: '王五',&lt;br/&gt;                            checked: false,&lt;br/&gt;                            group: 'theme'&lt;br/&gt;                        }, {&lt;br/&gt;                            text: '赵六',&lt;br/&gt;                            checked: false,&lt;br/&gt;                            group: 'theme'&lt;br/&gt;                        }&lt;br/&gt;                    ]&lt;br/&gt;                }&lt;br/&gt;            }, {&lt;br/&gt;                text: '请选择一个日期',&lt;br/&gt;                menu: Ext.create('Ext.menu.DatePicker', {&lt;br/&gt;                    handler: function (dp, date) {&lt;br/&gt;                        Ext.MessageBox.alert('消息', '你选择了:' + date.format('Y-m-d'));&lt;br/&gt;                    }&lt;br/&gt;                })&lt;br/&gt;            }, {&lt;br/&gt;                text: '选择一个颜色',&lt;br/&gt;                menu: Ext.create('Ext.menu.ColorPicker', {&lt;br/&gt;                    handler: function (cm, color) {&lt;br/&gt;                        Ext.MessageBox.alert('消息', '你选择了：' + color);&lt;br/&gt;                    }&lt;br/&gt;                })&lt;br/&gt;            }&lt;br/&gt;        ]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.把菜单附加到面板工具栏&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们定义一个面板，然后通过刚刚定义的菜单实现菜单栏。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //把菜单附加到工具栏上&lt;br/&gt;    var panel = new Ext.Panel({&lt;br/&gt;        renderTo: 'div1',&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 250,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '演示工具栏',&lt;br/&gt;        tbar: [{ text: "菜单", menu: menu}]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;下面看看展示效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122523531315.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.实现右键菜单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;还是用第一步定义的菜单，现在我们通过右键事件的方式实现右键菜单：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //定义右键菜单&lt;br/&gt;    Ext.getDoc().on('contextmenu', function (e, o) {&lt;br/&gt;        e.preventDefault();&lt;br/&gt;        menu.showAt(e.getXY());&lt;br/&gt;&lt;br/&gt;        //第二种写法：&lt;br/&gt;        //e.stopEvent();&lt;br/&gt;        //menu.showAt([e.getPageX(), e.getPageY()]);&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;单击右键，效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122523540216.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.在ListView中定义右键菜单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这里我们借用第11篇的ListView,我们要实现当数据行右键单击时，弹出菜单的效果。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var store = new Ext.data.JsonStore({&lt;br/&gt;        fields: [&lt;br/&gt;        { name: 'IntData', type: 'int' },&lt;br/&gt;        { name: 'StringData', type: 'string' },&lt;br/&gt;        { name: 'TimeData', type: 'date' }&lt;br/&gt;       ],&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'ListView1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows'&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        sortInfo: { field: 'IntData', direction: 'DESC' }&lt;br/&gt;    });&lt;br/&gt;    store.load();&lt;br/&gt;&lt;br/&gt;    var listView = Ext.create('Ext.ListView', {&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        store: store,&lt;br/&gt;        multiSelect: true,&lt;br/&gt;        emptyText: '无数据',&lt;br/&gt;        reserveScrollOffset: true,&lt;br/&gt;        hideHeaders: false,&lt;br/&gt;        columns: [{&lt;br/&gt;            header: "IntData",&lt;br/&gt;            dataIndex: 'IntData'&lt;br/&gt;        }, {&lt;br/&gt;            header: "StringData",&lt;br/&gt;            dataIndex: 'StringData'&lt;br/&gt;        }, {&lt;br/&gt;            header: "TimeData",&lt;br/&gt;            dataIndex: 'TimeData',&lt;br/&gt;            align: 'right',&lt;br/&gt;            xtype: 'datecolumn',&lt;br/&gt;            format: 'm-d h:i a'&lt;br/&gt;        }],&lt;br/&gt;        viewConfig: {&lt;br/&gt;            stripeRows: true,&lt;br/&gt;            listeners: {&lt;br/&gt;                itemcontextmenu: function (view, rec, node, index, e) {&lt;br/&gt;                    e.stopEvent();&lt;br/&gt;                    menu.showAt(e.getXY());&lt;br/&gt;                    return false;&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;在ListView中单击右键，效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122523544379.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、Ext.draw.Component 绘图&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ext支持通过js的方式绘图，可以绘制的包括基本图形圆形、矩形等，还可以描绘路径，因为它支持SVG路径语法。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.实现文本绘图&lt;/strong&gt;&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        Ext.create('Ext.draw.Component', {&lt;br/&gt;            renderTo: Ext.getBody(),&lt;br/&gt;            viewBox: false,&lt;br/&gt;            draggable: {&lt;br/&gt;                constrain: true,                    //允许拖动&lt;br/&gt;                constrainTo: Ext.getBody()&lt;br/&gt;            },&lt;br/&gt;            floating: true,&lt;br/&gt;            autoSize: true,&lt;br/&gt;            items: [{&lt;br/&gt;                type: 'text',&lt;br/&gt;                text: '图形化的文本',&lt;br/&gt;                fill: 'green',&lt;br/&gt;                font: '16px Arial',&lt;br/&gt;                rotate: {&lt;br/&gt;                    degrees: 45&lt;br/&gt;                }&lt;br/&gt;            }]&lt;br/&gt;        });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;通过上面的代码，我们可以展示出图片式文本，效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122523550835.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.基本图形，路径绘图&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们先通过基本图形绘制一个圆形，一个长方形，最后通过路径语法绘制一个等腰三角形：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var drawComponent = Ext.create('Ext.draw.Component', {&lt;br/&gt;        viewBox: false,&lt;br/&gt;        items: [{&lt;br/&gt;            type: 'circle',                     //园&lt;br/&gt;            fill: '#79BB3F',&lt;br/&gt;            radius: 100,&lt;br/&gt;            x: 100,&lt;br/&gt;            y: 100&lt;br/&gt;        }, {&lt;br/&gt;            type: 'rect',                       //矩形&lt;br/&gt;            width: 50,&lt;br/&gt;            height: 30,&lt;br/&gt;            fill: '#f00',&lt;br/&gt;            x: 0,&lt;br/&gt;            y: 0&lt;br/&gt;        }, {&lt;br/&gt;            type: "path",&lt;br/&gt;            path: "M100 0 L150 50 L200 0 Z",    //路径&lt;br/&gt;            "stroke-width": "1",&lt;br/&gt;            stroke: "#000",&lt;br/&gt;            fill: "blue"&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    Ext.create('Ext.Window', {&lt;br/&gt;        width: 230,&lt;br/&gt;        height: 250,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        items: [drawComponent]&lt;br/&gt;    }).show();&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122523562080.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、Ext.resizer.Resizer 大小变更&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;官方示例上作者说，他奶奶都会写这段代码，所以我也不想多讲了，应该很简单。控件的实现方式如下：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.onReady(function () {&lt;br/&gt;&lt;br/&gt;    var basic = Ext.create('Ext.resizer.Resizer', {&lt;br/&gt;        target: 'basic',&lt;br/&gt;        pinned: true,               //是否显示调节边框&lt;br/&gt;        width: 200,&lt;br/&gt;        height: 100,&lt;br/&gt;        minWidth: 100,&lt;br/&gt;        minHeight: 50,&lt;br/&gt;        dynamic: true,              //动态设置&lt;br/&gt;        preserveRatio: true,        //当变更大小时，长宽比例是否固定&lt;br/&gt;        heightIncrement: 20,        //单次变更，高度变更值&lt;br/&gt;        widthIncrement: 20,&lt;br/&gt;        transparent: false          //是否彻底隐藏调节边框&lt;br/&gt;    });&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122523564762.jpg" alt="" /&gt;&lt;/p&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2301426.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/26/2301426.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/23/2298746.html</id><title type="text">ExtJs4 笔记（12） Ext.toolbar.Toolbar 工具栏、Ext.toolbar.Paging 分页栏、Ext.ux.statusbar.StatusBar 状态栏</title><summary type="text">《回到系列目录本篇讲解三个工具栏控件。其中Ext.toolbar.Toolbar可以用来放置一些工具类操控按钮和菜单，Ext.toolbar.Paging专门用来控制数据集的分页展示，Ext.ux.statusbar.StatusBar用来展示当前的状态信息。一、Ext.toolbar.Toolbar工具栏控件可以被附加在面板、窗口等容器类控件中，可以在四个方位添加多个工具栏控件。我们演示多个Ext.toolbar.Toolbar控件，然后附加到面板的不同位置。1.在工具栏上添加菜单、按钮、搜索功能我们这里借用上一篇所讲到的listview控件作为数据展示，把listview放入一个面板控件中</summary><published>2011-12-23T00:20:00Z</published><updated>2011-12-23T00:20:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/23/2298746.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/23/2298746.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇讲解三个工具栏控件。其中Ext.toolbar.Toolbar可以用来放置一些工具类操控按钮和菜单，Ext.toolbar.Paging专门用来控制数据集的分页展示，Ext.ux.statusbar.StatusBar用来展示当前的状态信息。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、Ext.toolbar.Toolbar&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;工具栏控件可以被附加在面板、窗口等容器类控件中，可以在四个方位添加多个工具栏控件。我们演示多个Ext.toolbar.Toolbar控件，然后附加到面板的不同位置。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.在工具栏上添加菜单、按钮、搜索功能&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们这里借用上一篇所讲到的listview控件作为数据展示，把listview放入一个面板控件中，然后把工具栏添加到面板顶部，并且在工具栏中实现数据集的服务端搜索的功能。&lt;/p&gt;&lt;p&gt;首先我们定义一个数据模型和Store：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.define('Datas', {&lt;br/&gt;        extend: 'Ext.data.Model',&lt;br/&gt;        fields: [&lt;br/&gt;        { name: 'IntData', type: 'int' },&lt;br/&gt;        { name: 'StringData', type: 'string' },&lt;br/&gt;        { name: 'TimeData', type: 'date' }&lt;br/&gt;       ],&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'Toolbar1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows'&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var store = new Ext.data.Store({&lt;br/&gt;        model: 'Datas',&lt;br/&gt;        sortInfo: { field: 'IntData', direction: 'DESC' },&lt;br/&gt;        autoLoad: true&lt;br/&gt;    });&lt;br/&gt;    store.load();&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;服务端的json输出代码：&lt;/p&gt;[C# Mvc]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        public JsonResult Toolbar1Json(string keyword)&lt;br/&gt;        {&lt;br/&gt;&lt;br/&gt;            var rows = BasicData.Table.Take(10).Select(x =&amp;gt; new&lt;br/&gt;                {&lt;br/&gt;                    IntData = x.IntData,&lt;br/&gt;                    StringData = x.StringData,&lt;br/&gt;                    TimeData = x.TimeData.ToShortDateString()&lt;br/&gt;                });&lt;br/&gt;            if (!string.IsNullOrEmpty(keyword))&lt;br/&gt;            {&lt;br/&gt;                rows = rows.Where(x =&amp;gt; x.IntData.ToString() == keyword || x.StringData.Contains(keyword) || x.TimeData.Contains(keyword));&lt;br/&gt;            }&lt;br/&gt;            var json = new&lt;br/&gt;            {&lt;br/&gt;                results = BasicData.Table.Count,&lt;br/&gt;                rows = rows&lt;br/&gt;            };&lt;br/&gt;            return Json(json, JsonRequestBehavior.AllowGet);&lt;br/&gt;        }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;接着定义一个listView，来自上篇&lt;/p&gt;&lt;p&gt;现在我们要定义一个toolbar，在工具栏里面添加了工具按钮、普通文字、分割线、和菜单，还实现了搜索的功能：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var filed1 = new Ext.form.Field();&lt;br/&gt;&lt;br/&gt;    var tbar = Ext.create("Ext.Toolbar", {&lt;br/&gt;        items: ['文字', "-", {&lt;br/&gt;            xtype: "splitbutton",&lt;br/&gt;            text: "按钮"&lt;br/&gt;        }, {&lt;br/&gt;            text: "菜单",&lt;br/&gt;            menu:&lt;br/&gt;            {&lt;br/&gt;                items: [&lt;br/&gt;                    {&lt;br/&gt;                        text: '选项1'&lt;br/&gt;                    }, {&lt;br/&gt;                        text: '选项2'&lt;br/&gt;                    }, {&lt;br/&gt;                        text: '选项3',&lt;br/&gt;                        handler: function () {&lt;br/&gt;                            Ext.Msg.alert("提示", "来自菜单的消息");&lt;br/&gt;                        }&lt;br/&gt;                    }&lt;br/&gt;                ]&lt;br/&gt;            }&lt;br/&gt;        }, "-&amp;gt;", "关键字：", filed1, {&lt;br/&gt;            text: "搜索",&lt;br/&gt;            handler: function () {&lt;br/&gt;                store.load({ params: { keyword: filed1.getValue()} });&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;        ]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;注意这里，我们通过load store，把keyword关键字传给了c#的action参数：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;{&lt;br/&gt;            text: "搜索",&lt;br/&gt;            handler: function () {&lt;br/&gt;                store.load({ params: { keyword: filed1.getValue()} });&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;最后我们定义一个Panel，把listView和toolbar都添加到Panel上，注意，tbar表示了这个工具栏在上方。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var panel = new Ext.Panel({&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 250,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '演示工具栏',&lt;br/&gt;        items: listView,&lt;br/&gt;        tbar: tbar&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;大功告成，我们来看看效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300134049.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;我们输入关键字&amp;ldquo;6&amp;rdquo;后查看过滤效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300141439.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.溢出测试&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果工具栏上的item项目过多，而面板的长度不够那会怎么样？我们需要设置 overflowHandler: 'Menu'，代码如下：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var bbar = Ext.create('Ext.toolbar.Toolbar', {&lt;br/&gt;        layout: {&lt;br/&gt;            overflowHandler: 'Menu'&lt;br/&gt;        },&lt;br/&gt;        items: ["溢出测试", "溢出测试", "溢出测试", "溢出测试", "溢出测试", "溢出测试", "溢出测试",&lt;br/&gt;        "溢出测试", "溢出测试",&lt;br/&gt;        {&lt;br/&gt;            xtype: "button",&lt;br/&gt;            text: "溢出按钮",&lt;br/&gt;            handler: function () {&lt;br/&gt;                Ext.Msg.alert("提示", "工具栏按钮被点击");&lt;br/&gt;            }&lt;br/&gt;        }, { text: "溢出按钮", xtype: "splitbutton"}]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;预览下效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300145784.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.在右侧的工具栏&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;现在我们要实现放置在右侧的工具栏，这次我们直接在面板的代码里面写,代码如下：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var panel = new Ext.Panel({&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 250,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '演示工具栏',&lt;br/&gt;        items: listView,&lt;br/&gt;        tbar: tbar,&lt;br/&gt;        bbar: bbar,&lt;br/&gt;        rbar: [{&lt;br/&gt;            iconCls: 'add16',&lt;br/&gt;            tooltip: '按钮1'&lt;br/&gt;        },&lt;br/&gt;            '-',&lt;br/&gt;            {&lt;br/&gt;                iconCls: 'add16',&lt;br/&gt;                tooltip: {&lt;br/&gt;                    text: '按钮2',&lt;br/&gt;                    anchor: 'left'&lt;br/&gt;                }&lt;br/&gt;            }, {&lt;br/&gt;                iconCls: 'add16'&lt;br/&gt;            }, {&lt;br/&gt;                iconCls: 'add16'&lt;br/&gt;            },&lt;br/&gt;            '-',&lt;br/&gt;            {&lt;br/&gt;                iconCls: 'add16'&lt;br/&gt;            }&lt;br/&gt;        ]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;预览下效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300154876.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;最后奉上完整的代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.onReady(function () {&lt;br/&gt;    Ext.QuickTips.init();&lt;br/&gt;&lt;br/&gt;    Ext.define('Datas', {&lt;br/&gt;        extend: 'Ext.data.Model',&lt;br/&gt;        fields: [&lt;br/&gt;        { name: 'IntData', type: 'int' },&lt;br/&gt;        { name: 'StringData', type: 'string' },&lt;br/&gt;        { name: 'TimeData', type: 'date' }&lt;br/&gt;       ],&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'Toolbar1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows'&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var store = new Ext.data.Store({&lt;br/&gt;        model: 'Datas',&lt;br/&gt;        sortInfo: { field: 'IntData', direction: 'DESC' },&lt;br/&gt;        autoLoad: true&lt;br/&gt;    });&lt;br/&gt;    store.load();&lt;br/&gt;&lt;br/&gt;    var listView = Ext.create('Ext.ListView', {&lt;br/&gt;        store: store,&lt;br/&gt;        multiSelect: true,&lt;br/&gt;        emptyText: '当前没有数据展示',&lt;br/&gt;        reserveScrollOffset: true,&lt;br/&gt;        columns: [{&lt;br/&gt;            header: "IntData",&lt;br/&gt;            dataIndex: 'IntData'&lt;br/&gt;        }, {&lt;br/&gt;            header: "StringData",&lt;br/&gt;            dataIndex: 'StringData'&lt;br/&gt;        }, {&lt;br/&gt;            header: "TimeData",&lt;br/&gt;            dataIndex: 'TimeData',&lt;br/&gt;            align: 'right',&lt;br/&gt;            xtype: 'datecolumn',&lt;br/&gt;            format: 'm-d h:i a'&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var filed1 = new Ext.form.Field();&lt;br/&gt;&lt;br/&gt;    var tbar = Ext.create("Ext.Toolbar", {&lt;br/&gt;        items: ['文字', "-", {&lt;br/&gt;            xtype: "splitbutton",&lt;br/&gt;            text: "按钮"&lt;br/&gt;        }, {&lt;br/&gt;            text: "菜单",&lt;br/&gt;            menu:&lt;br/&gt;            {&lt;br/&gt;                items: [&lt;br/&gt;                    {&lt;br/&gt;                        text: '选项1'&lt;br/&gt;                    }, {&lt;br/&gt;                        text: '选项2'&lt;br/&gt;                    }, {&lt;br/&gt;                        text: '选项3',&lt;br/&gt;                        handler: function () {&lt;br/&gt;                            Ext.Msg.alert("提示", "来自菜单的消息");&lt;br/&gt;                        }&lt;br/&gt;                    }&lt;br/&gt;                ]&lt;br/&gt;            }&lt;br/&gt;        }, "-&amp;gt;", "关键字：", filed1, {&lt;br/&gt;            text: "搜索",&lt;br/&gt;            handler: function () {&lt;br/&gt;                store.load({ params: { keyword: filed1.getValue()} });&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;        ]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var bbar = Ext.create('Ext.toolbar.Toolbar', {&lt;br/&gt;        layout: {&lt;br/&gt;            overflowHandler: 'Menu'&lt;br/&gt;        },&lt;br/&gt;        items: ["溢出测试", "溢出测试", "溢出测试", "溢出测试", "溢出测试", "溢出测试", "溢出测试",&lt;br/&gt;        "溢出测试", "溢出测试",&lt;br/&gt;        {&lt;br/&gt;            xtype: "button",&lt;br/&gt;            text: "溢出按钮",&lt;br/&gt;            handler: function () {&lt;br/&gt;                Ext.Msg.alert("提示", "工具栏按钮被点击");&lt;br/&gt;            }&lt;br/&gt;        }, { text: "溢出按钮", xtype: "splitbutton"}]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var panel = new Ext.Panel({&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 250,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '演示工具栏',&lt;br/&gt;        items: listView,&lt;br/&gt;        tbar: tbar,&lt;br/&gt;        bbar: bbar,&lt;br/&gt;        rbar: [{&lt;br/&gt;            iconCls: 'add16',&lt;br/&gt;            tooltip: '按钮1'&lt;br/&gt;        },&lt;br/&gt;            '-',&lt;br/&gt;            {&lt;br/&gt;                iconCls: 'add16',&lt;br/&gt;                tooltip: {&lt;br/&gt;                    text: '按钮2',&lt;br/&gt;                    anchor: 'left'&lt;br/&gt;                }&lt;br/&gt;            }, {&lt;br/&gt;                iconCls: 'add16'&lt;br/&gt;            }, {&lt;br/&gt;                iconCls: 'add16'&lt;br/&gt;            },&lt;br/&gt;            '-',&lt;br/&gt;            {&lt;br/&gt;                iconCls: 'add16'&lt;br/&gt;            }&lt;br/&gt;        ]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;二、Ext.toolbar.Paging&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.基本的分页工具栏控件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ext.toolbar.Paging就是一个特殊的工具栏，它提供了数据集翻页的功能，下面我们看看store的实现：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var store = Ext.create('Ext.data.Store', {&lt;br/&gt;        fields: ['IntData', 'StringData', 'TimeData'],&lt;br/&gt;        pageSize: 15,&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'PagingToolbar1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows',&lt;br/&gt;                totalProperty: 'results'&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        autoLoad: true&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;对应的服务端mvc的代码如下：&lt;/p&gt;[C# Mvc]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        public JsonResult PagingToolbar1Json(int start, int limit)&lt;br/&gt;        {&lt;br/&gt;            var json = new&lt;br/&gt;            {&lt;br/&gt;                results = BasicData.Table.Count,&lt;br/&gt;                rows = BasicData.Table.Skip(start).Take(limit).Select(x =&amp;gt; new&lt;br/&gt;                {&lt;br/&gt;                    IntData = x.IntData,&lt;br/&gt;                    StringData = x.StringData,&lt;br/&gt;                    TimeData = x.TimeData.ToShortDateString()&lt;br/&gt;                })&lt;br/&gt;            };&lt;br/&gt;            return Json(json, JsonRequestBehavior.AllowGet);&lt;br/&gt;        }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;现在我们借用上篇的Ext.view.View控件，把它放置到一个面板中，面板的代码如下：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var panel = Ext.create('Ext.Panel', {&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        frame: true,&lt;br/&gt;        width: 535,&lt;br/&gt;        autoHeight: true,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '分页控件用在View',&lt;br/&gt;        items: Ext.create('Ext.view.View', {&lt;br/&gt;            store: store,&lt;br/&gt;            tpl: tpl,&lt;br/&gt;            autoHeight: true,&lt;br/&gt;            multiSelect: true,&lt;br/&gt;            id: 'view1',&lt;br/&gt;            overItemCls: 'hover',&lt;br/&gt;            itemSelector: 'tr.data',&lt;br/&gt;            emptyText: '没有数据',&lt;br/&gt;            plugins: [&lt;br/&gt;                Ext.create('Ext.ux.DataView.DragSelector', {}),&lt;br/&gt;                Ext.create('Ext.ux.DataView.LabelEditor', { dataIndex: 'IntData' })&lt;br/&gt;            ]&lt;br/&gt;        }),&lt;br/&gt;        bbar: Ext.create('Ext.toolbar.Paging', {&lt;br/&gt;            store: store,&lt;br/&gt;            displayInfo: true,&lt;br/&gt;            items: [&lt;br/&gt;                '-', {&lt;br/&gt;                    text: '第10页',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        store.loadPage(10);&lt;br/&gt;                    }&lt;br/&gt;                }]&lt;br/&gt;        })&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;注意上述代码，我们在分页工具栏控件中加入了一个按钮，当单击这个按钮时，数据集自动翻到第十页。&lt;/p&gt;&lt;p&gt;最后我们看看展示效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300175175.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.扩展后的翻页控件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们可以通过ux扩展支持定义不同风格的分页控件，这效果就像三国杀扩展包一样，我们可以通过滚轴控件和进度条控件去展示当前处于分页项的哪个位置。我们在分页控件的配置部分添加如下代码:&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;plugins: Ext.create('Ext.ux.SlidingPager', {})&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;展示效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300183752.jpg" alt="" /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;plugins: Ext.create('Ext.ux.ProgressBarPager', {})&lt;br/&gt;&lt;/div&gt;&lt;p&gt;展示效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300223358.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;完整的代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.Loader.setConfig({ enabled: true });&lt;br/&gt;Ext.Loader.setPath('Ext.ux', '/ExtJs/ux');&lt;br/&gt;//Ext.Loader.setPath('Ext.ux.DataView', '/ExtJs/ux/DataView');&lt;br/&gt;&lt;br/&gt;Ext.onReady(function () {&lt;br/&gt;&lt;br/&gt;    var store = Ext.create('Ext.data.Store', {&lt;br/&gt;        fields: ['IntData', 'StringData', 'TimeData'],&lt;br/&gt;        pageSize: 15,&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'PagingToolbar1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows',&lt;br/&gt;                totalProperty: 'results'&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        autoLoad: true&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var tpl = new Ext.XTemplate(&lt;br/&gt;        '&amp;lt;table cellpadding=0 cellspacing=0 border=1 width=450px&amp;gt;',&lt;br/&gt;        '&amp;lt;tr&amp;gt;&amp;lt;td colspan=3 align=center&amp;gt;&amp;lt;b&amp;gt;&amp;lt;font color=red&amp;gt;Ext.view.View取自服务端的数据表&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;',&lt;br/&gt;        '&amp;lt;tr&amp;gt;&amp;lt;td style="width:20%"&amp;gt;&amp;lt;b&amp;gt;编号&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td  style="width:50%"&amp;gt;&amp;lt;b&amp;gt;消息&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td style="width:30%"&amp;gt;&amp;lt;b&amp;gt;日期&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;',&lt;br/&gt;        '&amp;lt;tpl for="."&amp;gt;',&lt;br/&gt;            '&amp;lt;tr class="data"&amp;gt;&amp;lt;td class="x-editable"&amp;gt;{IntData}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{StringData}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{TimeData}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;',&lt;br/&gt;        '&amp;lt;/tpl&amp;gt;',&lt;br/&gt;        '&amp;lt;/table&amp;gt;'&lt;br/&gt;    );&lt;br/&gt;&lt;br/&gt;    var panel = Ext.create('Ext.Panel', {&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        frame: true,&lt;br/&gt;        width: 535,&lt;br/&gt;        autoHeight: true,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '分页控件用在View',&lt;br/&gt;        items: Ext.create('Ext.view.View', {&lt;br/&gt;            store: store,&lt;br/&gt;            tpl: tpl,&lt;br/&gt;            autoHeight: true,&lt;br/&gt;            multiSelect: true,&lt;br/&gt;            id: 'view1',&lt;br/&gt;            overItemCls: 'hover',&lt;br/&gt;            itemSelector: 'tr.data',&lt;br/&gt;            emptyText: '没有数据',&lt;br/&gt;            plugins: [&lt;br/&gt;                Ext.create('Ext.ux.DataView.DragSelector', {}),&lt;br/&gt;                Ext.create('Ext.ux.DataView.LabelEditor', { dataIndex: 'IntData' })&lt;br/&gt;            ]&lt;br/&gt;        }),&lt;br/&gt;        bbar: Ext.create('Ext.toolbar.Paging', {&lt;br/&gt;            store: store,&lt;br/&gt;            displayInfo: true,&lt;br/&gt;            items: [&lt;br/&gt;                '-', {&lt;br/&gt;                    text: '第10页',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        store.loadPage(10);&lt;br/&gt;                    }&lt;br/&gt;                }],&lt;br/&gt;            plugins: Ext.create('Ext.ux.SlidingPager', {})&lt;br/&gt;            //plugins: Ext.create('Ext.ux.ProgressBarPager', {})&lt;br/&gt;        })&lt;br/&gt;    });&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;三、Ext.ux.statusbar.StatusBar&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个状态栏控件也是ext的一个扩展支持，不过它就好像军争包一样，这次不是小小改进，而是一个全新的控件。&lt;/p&gt;&lt;p&gt;首先定义一个函数，它在前2秒将状态栏设置为繁忙状态，2秒后恢复：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var loadFn = function (btn, statusBar) {&lt;br/&gt;        btn = Ext.getCmp(btn);&lt;br/&gt;        statusBar = Ext.getCmp(statusBar);&lt;br/&gt;&lt;br/&gt;        btn.disable();&lt;br/&gt;        statusBar.showBusy();&lt;br/&gt;&lt;br/&gt;        Ext.defer(function () {&lt;br/&gt;            statusBar.clearStatus({ useDefaults: true });&lt;br/&gt;            btn.enable();&lt;br/&gt;        }, 2000);&lt;br/&gt;    };&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;接着我们将要几个按钮到状态栏，第一个设置状态为错误：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;                    handler: function () {&lt;br/&gt;                        var sb = Ext.getCmp('statusbar1');&lt;br/&gt;                        sb.setStatus({&lt;br/&gt;                            text: '错误!',&lt;br/&gt;                            iconCls: 'x-status-error',&lt;br/&gt;                            clear: true // 自动清除状态&lt;br/&gt;                        });&lt;br/&gt;                    }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;第二个设置状态为加载中：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;handler: function () {&lt;br/&gt;    var sb = Ext.getCmp('statusbar1');&lt;br/&gt;    sb.showBusy();&lt;br/&gt;}&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;第三个为清除状态：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;handler: function () {&lt;br/&gt;    var sb = Ext.getCmp('statusbar1');&lt;br/&gt;    sb.clearStatus();&lt;br/&gt;}&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;展示效果，分别是加载、错误、和清除状态：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300231483.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300234479.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122300240729.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;完整的代码：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.Loader.setConfig({ enabled: true });&lt;br/&gt;Ext.Loader.setPath('Ext.ux', '/ExtJs/ux');&lt;br/&gt;&lt;br/&gt;Ext.onReady(function () {&lt;br/&gt;    var loadFn = function (btn, statusBar) {&lt;br/&gt;        btn = Ext.getCmp(btn);&lt;br/&gt;        statusBar = Ext.getCmp(statusBar);&lt;br/&gt;&lt;br/&gt;        btn.disable();&lt;br/&gt;        statusBar.showBusy();&lt;br/&gt;&lt;br/&gt;        Ext.defer(function () {&lt;br/&gt;            statusBar.clearStatus({ useDefaults: true });&lt;br/&gt;            btn.enable();&lt;br/&gt;        }, 2000);&lt;br/&gt;    };&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;    var panel = new Ext.Panel({&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 250,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        //layout: 'fit',&lt;br/&gt;        title: '演示状态栏',&lt;br/&gt;        items: [{ xtype: "button", text: "测试", id:"button1", handler: function (btn, statusBar) {&lt;br/&gt;            loadFn("button1", "statusbar1");&lt;br/&gt;        }&lt;br/&gt;        }],&lt;br/&gt;        bbar: Ext.create('Ext.ux.statusbar.StatusBar', {&lt;br/&gt;            id: 'statusbar1',&lt;br/&gt;            defaultText: '就绪',&lt;br/&gt;            text: '没有任务',&lt;br/&gt;            iconCls: 'x-status-valid',&lt;br/&gt;            items: [&lt;br/&gt;                {&lt;br/&gt;                    xtype: 'button',&lt;br/&gt;                    text: '设置状态',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        var sb = Ext.getCmp('statusbar1');&lt;br/&gt;                        sb.setStatus({&lt;br/&gt;                            text: '错误!',&lt;br/&gt;                            iconCls: 'x-status-error',&lt;br/&gt;                            clear: true // 自动清除状态&lt;br/&gt;                        });&lt;br/&gt;                    }&lt;br/&gt;                },&lt;br/&gt;                {&lt;br/&gt;                    xtype: 'button',&lt;br/&gt;                    text: '设置为加载状态',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        var sb = Ext.getCmp('statusbar1');&lt;br/&gt;                        sb.showBusy();&lt;br/&gt;                    }&lt;br/&gt;                },&lt;br/&gt;                {&lt;br/&gt;                    xtype: 'button',&lt;br/&gt;                    text: '清除状态',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        var sb = Ext.getCmp('statusbar1');&lt;br/&gt;                        sb.clearStatus();&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;            ]&lt;br/&gt;        })&lt;br/&gt;&lt;br/&gt;    });&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;[Js] &lt;br /&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2298746.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/23/2298746.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/22/2296508.html</id><title type="text">ExtJs4 笔记（11） Ext.ListView、Ext.view.View 数据视图</title><summary type="text">《回到系列目录本篇介绍两个用来展示数据的容器控件，分别是Ext.ListView和Ext.view.View。Ext.ListView就是大名鼎鼎的Ext GridPanel的前身，不过现在的Ext4已经将它整合到GridPanel一起了，做一些简单的表格数据展示还是可以用到的。而Ext.view.View则提供了通过模板自定义展示数据的方式，数据的展示形式不限于表格，可表现为灵活的方式，同时Ext为其提供了基本的排序分页、项选择、事件等支持。如果不做特殊说明，本系列文章都以mvc的服务端返回json格式的数据作为数据源的方式。一、Ext.ListView下面我们看看一个基本的表格数据展示实例</summary><published>2011-12-22T00:21:00Z</published><updated>2011-12-22T00:21:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/22/2296508.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/22/2296508.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇介绍两个用来展示数据的容器控件，分别是Ext.ListView和Ext.view.View。Ext.ListView就是大名鼎鼎的Ext GridPanel的前身，不过现在的Ext4已经将它整合到GridPanel一起了，做一些简单的表格数据展示还是可以用到的。而Ext.view.View则提供了通过模板自定义展示数据的方式，数据的展示形式不限于表格，可表现为灵活的方式，同时Ext为其提供了基本的排序分页、项选择、事件等支持。&lt;/p&gt;&lt;p&gt;如果不做特殊说明，本系列文章都以mvc的服务端返回json格式的数据作为数据源的方式。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、Ext.ListView&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面我们看看一个基本的表格数据展示实例：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;ListView&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div1" class="content"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;span id="span1"&amp;gt;&amp;lt;/span&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.onReady(function () {&lt;br/&gt;    var store = new Ext.data.JsonStore({&lt;br/&gt;        fields: [&lt;br/&gt;        { name: 'IntData', type: 'int' },&lt;br/&gt;        { name: 'StringData', type: 'string' },&lt;br/&gt;        { name: 'TimeData', type: 'date' }&lt;br/&gt;       ],&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'ListView1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows'&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        sortInfo: { field: 'IntData', direction: 'DESC' }&lt;br/&gt;    });&lt;br/&gt;    store.load();&lt;br/&gt;&lt;br/&gt;    var listView = Ext.create('Ext.ListView', {&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        store: store,&lt;br/&gt;        multiSelect: true,&lt;br/&gt;        emptyText: '无数据',&lt;br/&gt;        reserveScrollOffset: true,&lt;br/&gt;        hideHeaders: false,        //是否隐藏标题&lt;br/&gt;        columns: [{&lt;br/&gt;            header: "IntData",&lt;br/&gt;            dataIndex: 'IntData'&lt;br/&gt;        }, {&lt;br/&gt;            header: "StringData",&lt;br/&gt;            dataIndex: 'StringData'&lt;br/&gt;        }, {&lt;br/&gt;            header: "TimeData",&lt;br/&gt;            dataIndex: 'TimeData',&lt;br/&gt;            align: 'right',&lt;br/&gt;            xtype: 'datecolumn',&lt;br/&gt;            format: 'm-d h:i a'&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //当选择行改变时，输出被选行&lt;br/&gt;    listView.on('selectionchange', function (view, selectNodes) {&lt;br/&gt;        var msg = "";&lt;br/&gt;        for (var i = 0; i &amp;lt; selectNodes.length; i++) {&lt;br/&gt;            var index = 1 + selectNodes[i].index;&lt;br/&gt;            if (msg == "") {&lt;br/&gt;                msg = index;&lt;br/&gt;            }&lt;br/&gt;            else {&lt;br/&gt;                msg += "," + index;&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;        if (msg == "") Ext.get("span1").update('当前没有选择任何数据。');&lt;br/&gt;        else Ext.get("span1").update('当前选择了第' + msg + '行数据。');&lt;br/&gt;    });&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;服务端模拟的数据源，以及通过MVC的jsonresult返回数据的代码：&lt;/p&gt;[C# Mvc]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;//控制层&lt;br/&gt;public JsonResult ListView1Json()&lt;br/&gt;{&lt;br/&gt;    var json = new&lt;br/&gt;    {&lt;br/&gt;        rows = BasicData.Table.Take(8).Select(x =&amp;gt; new&lt;br/&gt;        {&lt;br/&gt;            IntData = x.IntData,&lt;br/&gt;            StringData = x.StringData,&lt;br/&gt;            TimeData = x.TimeData.ToShortDateString()&lt;br/&gt;        })&lt;br/&gt;    };&lt;br/&gt;    return Json(json, JsonRequestBehavior.AllowGet);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;//模拟数据&lt;br/&gt;public class BasicData&lt;br/&gt;{&lt;br/&gt;    static List&amp;lt;BasicData&amp;gt; table;&lt;br/&gt;    static public List&amp;lt;BasicData&amp;gt; Table&lt;br/&gt;    {&lt;br/&gt;        get&lt;br/&gt;        {&lt;br/&gt;            if (table == null)&lt;br/&gt;            {&lt;br/&gt;                table = new List&amp;lt;BasicData&amp;gt;();&lt;br/&gt;                for (int i = 0; i &amp;lt; 1000; i++)&lt;br/&gt;                {&lt;br/&gt;                    var obj = new BasicData()&lt;br/&gt;                    {&lt;br/&gt;                        IntData = i + 1,&lt;br/&gt;                        StringData = "测试数据" + (i + 1),&lt;br/&gt;                        TimeData = DateTime.Today.AddDays(i)&lt;br/&gt;                    };&lt;br/&gt;                    table.Add(obj);&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;            return table;&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;    public int IntData { get; set; }&lt;br/&gt;    public string StringData { get; set; }&lt;br/&gt;    public DateTime TimeData { get; set; }&lt;br/&gt;}&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;来看看效果，数据已经正确加载，当我们选择行时，可以看到提示当前选择了哪些行:&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122123274183.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;再看看通过火狐调试捕获到的服务端json数据：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122123281253.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、Ext.view.View&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;先看看实现代码：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;Ext.view.View&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="div1"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;span id="span1"&amp;gt;&amp;lt;/span&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Css]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;#view1 .data&lt;br/&gt;{&lt;br/&gt;    background-color:#fff;&lt;br/&gt;}&lt;br/&gt;#view1 tr.hover {&lt;br/&gt;    background-color: #ddd;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;#view1 .x-item-selected {&lt;br/&gt;    background-color:Yellow !important;&lt;br/&gt;}&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.Loader.setConfig({ enabled: true });&lt;br/&gt;Ext.Loader.setPath('Ext.ux.DataView', '/ExtJs/ux/DataView');&lt;br/&gt;&lt;br/&gt;Ext.onReady(function () {&lt;br/&gt;    //创建store&lt;br/&gt;    var store = Ext.create('Ext.data.Store', {&lt;br/&gt;        fields: ['IntData', 'StringData', 'TimeData'],&lt;br/&gt;        proxy: {&lt;br/&gt;            type: 'ajax',&lt;br/&gt;            url: 'DataView1Json',&lt;br/&gt;            reader: {&lt;br/&gt;                type: 'json',&lt;br/&gt;                root: 'rows'&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;    store.load();&lt;br/&gt;&lt;br/&gt;    //定义模板&lt;br/&gt;    var tpl = new Ext.XTemplate(&lt;br/&gt;        '&amp;lt;table cellpadding=0 cellspacing=0 border=1 width=450px&amp;gt;',&lt;br/&gt;        '&amp;lt;tr&amp;gt;&amp;lt;td colspan=3 align=center&amp;gt;&amp;lt;b&amp;gt;&amp;lt;font color=red&amp;gt;Ext.view.View取自服务端的数据表&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;',&lt;br/&gt;        '&amp;lt;tr&amp;gt;&amp;lt;td style="width:20%"&amp;gt;&amp;lt;b&amp;gt;编号&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td  style="width:50%"&amp;gt;&amp;lt;b&amp;gt;消息&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td style="width:30%"&amp;gt;&amp;lt;b&amp;gt;日期&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;',&lt;br/&gt;        '&amp;lt;tpl for="."&amp;gt;',&lt;br/&gt;            '&amp;lt;tr class="data"&amp;gt;&amp;lt;td class="x-editable"&amp;gt;{IntData}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{StringData}&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;{TimeData}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;',&lt;br/&gt;        '&amp;lt;/tpl&amp;gt;',&lt;br/&gt;        '&amp;lt;/table&amp;gt;'&lt;br/&gt;    );&lt;br/&gt;&lt;br/&gt;    //定义Ext.view.View控件&lt;br/&gt;    var view = Ext.create('Ext.view.View', {&lt;br/&gt;        renderTo: "div1",&lt;br/&gt;        store: store,&lt;br/&gt;        tpl: tpl,&lt;br/&gt;        autoHeight: true,&lt;br/&gt;        multiSelect: true,&lt;br/&gt;        //height: 310,&lt;br/&gt;        trackOver: true,&lt;br/&gt;        id: 'view1',&lt;br/&gt;        overItemCls: 'hover',&lt;br/&gt;        itemSelector: 'tr.data',&lt;br/&gt;        emptyText: '没有数据',&lt;br/&gt;        plugins: [&lt;br/&gt;                Ext.create('Ext.ux.DataView.DragSelector', {}),&lt;br/&gt;                Ext.create('Ext.ux.DataView.LabelEditor', { dataIndex: 'IntData' })&lt;br/&gt;            ],&lt;br/&gt;        listeners: {&lt;br/&gt;            selectionchange: function (dataView, selectNodes) {&lt;br/&gt;                var msg = "";&lt;br/&gt;                for (var i = 0; i &amp;lt; selectNodes.length; i++) {&lt;br/&gt;                    var index = 1 + selectNodes[i].index;&lt;br/&gt;                    if (msg == "") {&lt;br/&gt;                        msg = index;&lt;br/&gt;                    }&lt;br/&gt;                    else {&lt;br/&gt;                        msg += "," + index;&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;                if (msg == "") Ext.get("span1").update('当前没有选择任何数据。');&lt;br/&gt;                else Ext.get("span1").update('当前选择了第' + msg + '行数据。');&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[C# Mvc]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        public JsonResult DataView1Json()&lt;br/&gt;        {&lt;br/&gt;            var json = new&lt;br/&gt;            {&lt;br/&gt;                rows = BasicData.Table.Take(8).Select(x =&amp;gt; new&lt;br/&gt;                {&lt;br/&gt;                    IntData = x.IntData,&lt;br/&gt;                    StringData = x.StringData,&lt;br/&gt;                    TimeData = x.TimeData.ToShortDateString()&lt;br/&gt;                })&lt;br/&gt;            };&lt;br/&gt;            return Json(json,JsonRequestBehavior.AllowGet);&lt;br/&gt;        }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;1.要注意的地方：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;对于数据item项，我们在其html 设置 class="data",那么我们在配置项中设置：itemSelector: 'tr.data'表明了这个CSS选择器选中的元素是一个item数据项。&lt;/p&gt;&lt;p&gt;当item被选择时，我们需要定义一个.x-item-selected 的样式，这样才可以在展示界面表现出item项被选中时的样式。&lt;/p&gt;&lt;p&gt;下面我们看看效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122123292340.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.对Ext.view.View的扩展&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;注意到配置项的如下代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        plugins: [&lt;br/&gt;                Ext.create('Ext.ux.DataView.DragSelector', {}),&lt;br/&gt;                Ext.create('Ext.ux.DataView.LabelEditor', { dataIndex: 'IntData' })&lt;br/&gt;            ],&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;这里分别引入了两个扩展支持，前者描述了数据项可以通过拖动鼠标选择多个item项，查看效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122123300847.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;第二个扩展支持了对item数据项记录集的单元格数据的编辑功能，这里表明了dataIndex为'IntData'的单元格可以被编辑。注意：在模板对应的位置要引入 class="x-editable"的样式来支持。下面看看效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122123305364.jpg" alt="" /&gt;&lt;/p&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2296508.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/22/2296508.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/21/2295355.html</id><title type="text">ExtJs4 笔记（10） Ext.tab.Panel 选项卡</title><summary type="text">《回到系列目录本篇讲解选项卡控件。一、基本选项卡首先我们来定义一个基本的选项卡控件，其中每个Tab各有不同，Tab的正文内容可以有三种方式获取：1.基本方式:通过定义html和items的方式。2.读取其他html的信息:通过设置contentEl就可以获取其他html的信息为当前tab正文。3.读取服务端数据:通过定义autoLoad异步方式获取服务端数据。另外，每个tab都可以设置是否可关闭，进入tab时的事件，以及tab是否可用，具体情况请看代码：[html] &lt;h1&gt;基本选项卡&lt;/h1&gt; &lt;div class="content" sty</summary><published>2011-12-21T00:22:00Z</published><updated>2011-12-21T00:22:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/21/2295355.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/21/2295355.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇讲解选项卡控件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、基本选项卡&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先我们来定义一个基本的选项卡控件，其中每个Tab各有不同，Tab的正文内容可以有三种方式获取：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.基本方式:&lt;/strong&gt;通过定义html和items的方式。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.读取其他html的信息:&lt;/strong&gt;通过设置contentEl就可以获取其他html的信息为当前tab正文。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.读取服务端数据:&lt;/strong&gt;通过定义autoLoad异步方式获取服务端数据。&lt;/p&gt;&lt;p&gt;另外，每个tab都可以设置是否可关闭，进入tab时的事件，以及tab是否可用，具体情况请看代码：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;基本选项卡&amp;lt;/h1&amp;gt; &lt;br/&gt;    &amp;lt;div class="content" style="height: 150px"&amp;gt;&lt;br/&gt;        &amp;lt;div id="tabPanel"&amp;gt;&lt;br/&gt;            &amp;lt;div style="display: none"&amp;gt;&lt;br/&gt;                &amp;lt;div id="oneTab"&amp;gt;&lt;br/&gt;                    &amp;lt;p&amp;gt;这个tab所展示的内容是读取至其他HTML标签&amp;lt;/p&amp;gt;&lt;br/&gt;                &amp;lt;/div&amp;gt;&lt;br/&gt;            &amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //1.基本的选项卡&lt;br/&gt;    var tabs1 = Ext.createWidget('tabpanel', {&lt;br/&gt;        renderTo: "tabPanel",&lt;br/&gt;        activeTab: 1,                       //指定默认的活动tab&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 120,&lt;br/&gt;        plain: true,                        //True表示tab候选栏上没有背景图片（默认为false）&lt;br/&gt;        enableTabScroll: true,              //选项卡过多时，允许滚动&lt;br/&gt;        defaults: { autoScroll: true },&lt;br/&gt;        items: [{&lt;br/&gt;            id: "tab1",&lt;br/&gt;            title: '普通Tab',&lt;br/&gt;            html: "这只是一个非常普通的Tab。",&lt;br/&gt;            items:[{xtype:'button',text:'按钮'}],&lt;br/&gt;            closable: true                  //这个tab可以被关闭&lt;br/&gt;        }, {&lt;br/&gt;            id: "tab2",&lt;br/&gt;            title: '内容来至div',&lt;br/&gt;            contentEl: 'oneTab'             //指定了当前tab正文部分从哪个html元素读取&lt;br/&gt;        }, {&lt;br/&gt;            id: "tab3",&lt;br/&gt;            title: 'Ajax Tab',&lt;br/&gt;            autoLoad: { url: 'AjaxTabContent', params: { data: "从客户端传入的参数" }, method: 'GET' }&lt;br/&gt;        }, {&lt;br/&gt;            id: "tab4",&lt;br/&gt;            title: '事件Tab',&lt;br/&gt;            listeners: { activate: handleActivate },&lt;br/&gt;            html: "带事件的Tab。"&lt;br/&gt;        }, {&lt;br/&gt;            id: "tab5",&lt;br/&gt;            title: '不可用Tab',&lt;br/&gt;            disabled: true,&lt;br/&gt;            html: "不可用的Tab，你是看不到我的。"&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;    //单击tab4后触发的事件&lt;br/&gt;    function handleActivate(tab) {&lt;br/&gt;        alert(tab.title + ': activated事件触发。');&lt;br/&gt;    }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;我们查看一下生成的选项卡效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101075480.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、操作选项卡&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;选项卡生成后，我们可以通过js去操作它，比如动态新增、删除、插入选项卡，设置活动选项卡等，我们看看具体实现方法：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;操作选项卡&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="content2"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    var index = 0;&lt;br/&gt;&lt;br/&gt;    //新增一个Tab&lt;br/&gt;    Ext.createWidget("button", {&lt;br/&gt;        text: "新增一个Tab",&lt;br/&gt;        renderTo: 'content2',&lt;br/&gt;        handler: function () {&lt;br/&gt;            tabs1.add({&lt;br/&gt;                title: '新Tab ' + (++index),&lt;br/&gt;                id: "newTab" + index,&lt;br/&gt;                html: '选项卡文本部分 ' + (index) + '&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;',&lt;br/&gt;                closable: true&lt;br/&gt;            });&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //插入一个Tab&lt;br/&gt;    Ext.createWidget("button", {&lt;br/&gt;        text: "在2号位置插入新Tab",&lt;br/&gt;        renderTo: 'content2',&lt;br/&gt;        handler: function () {&lt;br/&gt;            tabs1.insert(2, {&lt;br/&gt;                title: '新Tab ' + (++index),&lt;br/&gt;                id: "newTab" + index,&lt;br/&gt;                html: '选项卡文本部分 ' + (index) + '&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;',&lt;br/&gt;                closable: true&lt;br/&gt;            });&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //删除一个Tab&lt;br/&gt;    Ext.createWidget("button", {&lt;br/&gt;        text: "删除2号位置的Tab",&lt;br/&gt;        renderTo: 'content2',&lt;br/&gt;        handler: function () {&lt;br/&gt;            tabs1.remove(2);&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //删除id为&amp;ldquo;tab1&amp;rdquo;的Tab&lt;br/&gt;    Ext.createWidget("button", {&lt;br/&gt;        text: "删除id为&amp;ldquo;tab1&amp;rdquo;的Tab",&lt;br/&gt;        renderTo: 'content2',&lt;br/&gt;        handler: function () {&lt;br/&gt;            tabs1.remove("tab1");&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //删除id为&amp;ldquo;tab1&amp;rdquo;的Tab&lt;br/&gt;    Ext.createWidget("button", {&lt;br/&gt;        text: "设置第三个Tab为活动tab",&lt;br/&gt;        renderTo: 'content2',&lt;br/&gt;        handler: function () {&lt;br/&gt;            tabs1.setActiveTab(2);&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101090571.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、选项卡按钮在下方&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;默认的选项卡按钮在上方，我们可以随意定义选项卡按钮的位置，下面代码演示了具体的用法：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;选项卡按钮在下方&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="content3"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //选项卡按钮在下方&lt;br/&gt;    var tabs3 = Ext.createWidget('tabpanel', {&lt;br/&gt;        renderTo: "content3",&lt;br/&gt;        activeTab: 0,&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 150,&lt;br/&gt;        tabPosition: 'bottom'           //指定了选项卡的位置，left,right&lt;br/&gt;    });&lt;br/&gt;    for (var i = 0; i &amp;lt; 3; i++)&lt;br/&gt;        tabs3.add({&lt;br/&gt;            title: 'Tab ' + i,&lt;br/&gt;            id: "Tabs3_" + i,&lt;br/&gt;            html: '选项卡文本部分 ' + (index) + '&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;',&lt;br/&gt;            closable: true&lt;br/&gt;        });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101092944.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、可拖动的选项卡&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过官方扩展包我们可以增强选项卡控件的易用性，比如现在我们可以实现一个可以拖动选项卡按钮的功能：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;可拖动的选项卡&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="content4"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;//首先要动态加载ux扩展的js&lt;br/&gt;Ext.Loader.setConfig({enabled: true});&lt;br/&gt;Ext.Loader.setPath('Ext.ux', '/ExtJs/ux');&lt;br/&gt;Ext.require([&lt;br/&gt;    'Ext.tip.QuickTipManager',&lt;br/&gt;    'Ext.tab.Panel',&lt;br/&gt;    'Ext.ux.TabScrollerMenu',&lt;br/&gt;    'Ext.ux.TabReorderer',&lt;br/&gt;    'Ext.ux.TabCloseMenu',&lt;br/&gt;    'Ext.ux.GroupTabPanel'&lt;br/&gt;]);&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;//以下是功能代码&lt;br/&gt;&lt;br/&gt;    //可拖动的选项卡&lt;br/&gt;    var tabs4 = Ext.createWidget('tabpanel', {&lt;br/&gt;        renderTo: "content4",&lt;br/&gt;        activeTab: 0,&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 150,&lt;br/&gt;        plugins: Ext.create('Ext.ux.TabReorderer'),&lt;br/&gt;        items: [{&lt;br/&gt;            xtype: 'panel',&lt;br/&gt;            title: 'tab不可拖',&lt;br/&gt;            html: "这个选项卡不可被拖动",&lt;br/&gt;            reorderable: false,&lt;br/&gt;            closable: true&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;    for (var i = 0; i &amp;lt; 3; i++)&lt;br/&gt;        tabs4.add({&lt;br/&gt;            title: 'Tab ' + i,&lt;br/&gt;            id: "Tabs4_" + i,&lt;br/&gt;            html: '选项卡文本部分 ' + (index) + '&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'&lt;br/&gt;        });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下，可见一个tab已经被移动：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101110310.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、过多选项卡的菜单式展示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果面板上的选项卡打开的过多而显示不下，那么需要对溢出的选项卡用菜单的方式展示出来，实现方式如下，注意要引入扩展的css样式：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;过多选项卡的菜单式展示&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="content5"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //选项卡过多溢出时菜单显示&lt;br/&gt;    var tabs5 = Ext.createWidget('tabpanel', {&lt;br/&gt;        renderTo: "content5",&lt;br/&gt;        activeTab: 0,&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 150,&lt;br/&gt;        plugins: Ext.create('Ext.ux.TabScrollerMenu', {&lt;br/&gt;            maxText: 15,&lt;br/&gt;            pageSize: 5&lt;br/&gt;        }),&lt;br/&gt;        items: [{&lt;br/&gt;            title: 'tab0',&lt;br/&gt;            html: '第一个tab'&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;    Ext.defer(function () {&lt;br/&gt;        var myTabs = [];&lt;br/&gt;        for (var i = 0; i &amp;lt; 15; i++) {&lt;br/&gt;            myTabs.push({&lt;br/&gt;                title: 'Tab ' + i,&lt;br/&gt;                id: "Tabs5_" + i,&lt;br/&gt;                html: '选项卡文本部分 ' + (index) + '&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'&lt;br/&gt;            });&lt;br/&gt;        }&lt;br/&gt;        tabs5.add(myTabs);&lt;br/&gt;    }, 1000);&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101120021.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六、选项卡的右键菜单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一般的应用程序都支持在选项卡按钮上面通过右键的方式去关闭多余的选项卡，在ext中也可以做到，实现方法如下：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;选项卡的右键菜单&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="content6"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //选项卡的右键菜单&lt;br/&gt;    var currentItem;&lt;br/&gt;    var tabs6 = Ext.createWidget('tabpanel', {&lt;br/&gt;        renderTo: "content6",&lt;br/&gt;        activeTab: 0,&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 150,&lt;br/&gt;        plugins: Ext.create('Ext.ux.TabCloseMenu', {&lt;br/&gt;            closeTabText: '关闭当前',&lt;br/&gt;            closeOthersTabsText: '关闭其他',&lt;br/&gt;            closeAllTabsText: '关闭所有',&lt;br/&gt;            extraItemsTail: [&lt;br/&gt;                        '-',&lt;br/&gt;                        {&lt;br/&gt;                            text: '可关闭',&lt;br/&gt;                            checked: true,&lt;br/&gt;                            hideOnClick: true,&lt;br/&gt;                            handler: function (item) {&lt;br/&gt;                                currentItem.tab.setClosable(item.checked);&lt;br/&gt;                            }&lt;br/&gt;                        }&lt;br/&gt;                    ],&lt;br/&gt;            listeners: {&lt;br/&gt;                aftermenu: function () {&lt;br/&gt;                    currentItem = null;&lt;br/&gt;                },&lt;br/&gt;                beforemenu: function (menu, item) {&lt;br/&gt;                    var menuitem = menu.child('*[text="可关闭"]');&lt;br/&gt;                    currentItem = item;&lt;br/&gt;                    menuitem.setChecked(item.closable);&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;        }),&lt;br/&gt;        items: [{&lt;br/&gt;            title: 'tab1',&lt;br/&gt;            html: '第一个tab'&lt;br/&gt;        }, {&lt;br/&gt;            title: 'tab2',&lt;br/&gt;            closable: true,&lt;br/&gt;            html: '第二个tab'&lt;br/&gt;        }, {&lt;br/&gt;            title: 'tab3',&lt;br/&gt;            closable: true,&lt;br/&gt;            html: '第三个tab'&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101125028.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;七、分组式选项卡&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们还可以对选项卡进行分组，具体实现如下：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;分组式选项卡&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="content7"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //分组式选项卡&lt;br/&gt;    var tabs7 = Ext.create('Ext.ux.GroupTabPanel', {&lt;br/&gt;        activeGroup: 0,             //设置当前活动的分组&lt;br/&gt;        items: [{&lt;br/&gt;            expanded: false,&lt;br/&gt;            mainItem: 1,            //设置主要的item，这个tab会在最上面，以文件夹方式展示出来。&lt;br/&gt;            items: [{&lt;br/&gt;                title: '项目1',&lt;br/&gt;                html: "&amp;lt;b&amp;gt;第一组第一项正文。&amp;lt;/b&amp;gt;"&lt;br/&gt;            }, {&lt;br/&gt;                title: '项目2',&lt;br/&gt;                border: false,&lt;br/&gt;                html: "&amp;lt;b&amp;gt;第一组第二项正文。&amp;lt;/b&amp;gt;"&lt;br/&gt;            }, {&lt;br/&gt;                title: '项目3',&lt;br/&gt;                border: false,&lt;br/&gt;                html: "&amp;lt;b&amp;gt;第一组第三项正文。&amp;lt;/b&amp;gt;"&lt;br/&gt;            }]&lt;br/&gt;        }, {&lt;br/&gt;            expanded: true,&lt;br/&gt;            items: [{&lt;br/&gt;                title: '项目1',&lt;br/&gt;                html: "&amp;lt;b&amp;gt;第二组第一项正文。&amp;lt;/b&amp;gt;"&lt;br/&gt;            }, {&lt;br/&gt;                title: '项目2',&lt;br/&gt;                html: "&amp;lt;b&amp;gt;第二组第二项正文。&amp;lt;/b&amp;gt;"&lt;br/&gt;            }]&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;    Ext.create('Ext.Panel', {&lt;br/&gt;        renderTo: "content7",&lt;br/&gt;        width: 600,&lt;br/&gt;        height: 250,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '分组tab演示',&lt;br/&gt;        items: tabs7&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122101132262.jpg" alt="" /&gt;&lt;/p&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2295355.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/21/2295355.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/20/2294118.html</id><title type="text">ExtJs4 笔记（9） Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件</title><summary type="text">《回到系列目录本篇讲解三个容器类控件。一、面板控件 Ext.Panel一个面板控件包括几个部分，有标题栏、工具栏、正文、按钮区。标题栏位于最上面，工具栏可以在四个位置放置，围绕中间部分正文，按钮区位于最小方。下面介绍几个基本配置项：1.title:设置面板标题文本。2.tbar,lbar,rbar,bbar:分别设置上、左、右、下四个部位的工具栏。3.html，items:前者用来设置正文部分的html，后者设置正文部分的ext控件。4.buttons:设置按钮区的按钮。下面看看面板生成代码：[html] &lt;h1&gt;Panel&lt;/h1&gt; &lt;div id="</summary><published>2011-12-20T00:25:00Z</published><updated>2011-12-20T00:25:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/20/2294118.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/20/2294118.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇讲解三个容器类控件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、面板控件 Ext.Panel&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一个面板控件包括几个部分，有标题栏、工具栏、正文、按钮区。标题栏位于最上面，工具栏可以在四个位置放置，围绕中间部分正文，按钮区位于最小方。下面介绍几个基本配置项：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.title:&lt;/strong&gt;设置面板标题文本。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.tbar,lbar,rbar,bbar:&lt;/strong&gt;分别设置上、左、右、下四个部位的工具栏。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.html，items:&lt;/strong&gt;前者用来设置正文部分的html，后者设置正文部分的ext控件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.buttons:&lt;/strong&gt;设置按钮区的按钮。&lt;/p&gt;&lt;p&gt;下面看看面板生成代码：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;Panel&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div1" class="content"&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.onReady(function () {&lt;br/&gt;    var p = Ext.create('Ext.Panel', {&lt;br/&gt;        title: '面板标题',&lt;br/&gt;        collapsible: true,&lt;br/&gt;        renderTo: 'div1',&lt;br/&gt;        width: 400,&lt;br/&gt;        height: 300,&lt;br/&gt;        autoScroll: false,&lt;br/&gt;        bodyBorder: true,&lt;br/&gt;        buttonAlign: 'right',&lt;br/&gt;        buttons: [{&lt;br/&gt;            text: "按钮1",&lt;br/&gt;            handler: function () {&lt;br/&gt;                Ext.Msg.alert("提示", "第一个事件");&lt;br/&gt;            },&lt;br/&gt;            id: "bt1"&lt;br/&gt;        }, {&lt;br/&gt;            text: "按钮2",&lt;br/&gt;            id: "bt2"&lt;br/&gt;        }&lt;br/&gt;        ],&lt;br/&gt;        floating: true,&lt;br/&gt;        footerCfg: { tag: 'span', id: 'span1', html: '面板底部' },&lt;br/&gt;        items: [{&lt;br/&gt;            xtype: "button",&lt;br/&gt;            text: "按钮"&lt;br/&gt;        }],&lt;br/&gt;        tbar: Ext.create('Ext.toolbar.Toolbar', { items: ["工具栏"] }),&lt;br/&gt;        html: "&amp;lt;b&amp;gt;正文&amp;lt;/b&amp;gt;"&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    p.setPosition(40, 50);&lt;br/&gt;&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122008155045.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、窗口控件 Ext.window.Window&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;窗口控件与面板控件基本类似，只不过他看起来像一个窗口，具备最大化，最小化，打开关闭、拖动等窗口操作，下面看看窗口生成代码：&lt;/p&gt;&lt;p&gt;下面看看面板生成代码：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;窗口&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" style="height:300px"&amp;gt;&lt;br/&gt;    &amp;lt;button id="button1"&amp;gt;打开窗口&amp;lt;/button&amp;gt;&lt;br/&gt;        &amp;lt;div id="win1"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.onReady(function () {&lt;br/&gt;    var window1 = Ext.create('Ext.window.Window', {&lt;br/&gt;        applyTo: 'win1',&lt;br/&gt;        layout: 'table',            //内部元素布局方式{absolute accordion anchor border card column fit form table}&lt;br/&gt;        width: 500,&lt;br/&gt;        height: 200,&lt;br/&gt;        closeAction: 'hide',        //窗口关闭的方式：hide/close&lt;br/&gt;        plain: true,&lt;br/&gt;        title: "窗口标题",&lt;br/&gt;        maximizable: true,          //是否可以最大化&lt;br/&gt;        minimizable: true,          //是否可以最小化&lt;br/&gt;        closable: false,            //是否可以关闭&lt;br/&gt;        modal: true,                //是否为模态窗口&lt;br/&gt;        resizable: false,           //是否可以改变窗口大小&lt;br/&gt;        items: [{&lt;br/&gt;            text: '按钮',&lt;br/&gt;            xtype: "button"&lt;br/&gt;        }, {&lt;br/&gt;            width: 214,&lt;br/&gt;            minValue: 0,&lt;br/&gt;            maxValue: 100,&lt;br/&gt;            value: 50,&lt;br/&gt;            xtype: "slider"&lt;br/&gt;        }, {&lt;br/&gt;            xtype: "button",&lt;br/&gt;            text: '一个菜单',&lt;br/&gt;            width: "60px",&lt;br/&gt;            height: "15px",&lt;br/&gt;            menu: {&lt;br/&gt;                items: [&lt;br/&gt;                            new Ext.ColorPalette({&lt;br/&gt;                                listeners: {&lt;br/&gt;                                    select: function (cp, color) {&lt;br/&gt;                                        Ext.Msg.alert('颜色选择', '你选择了' + color + '。');&lt;br/&gt;                                    }&lt;br/&gt;                                }&lt;br/&gt;                            }), '-',&lt;br/&gt;                            { text: '菜单项1' }, { text: '菜单项2' }, { text: '菜单项3' }&lt;br/&gt;                        ]&lt;br/&gt;            }&lt;br/&gt;        }],&lt;br/&gt;&lt;br/&gt;        buttons: [{&lt;br/&gt;            text: '确定',&lt;br/&gt;            disabled: true&lt;br/&gt;        }, {&lt;br/&gt;            text: '取消',&lt;br/&gt;            handler: function () {&lt;br/&gt;                window1.hide();&lt;br/&gt;            }&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;    Ext.fly("button1").on("click", function () {&lt;br/&gt;        window1.show(Ext.get("button1"));&lt;br/&gt;    });&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122008160729.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、布局控件 Ext.container.Viewport&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;布局控件一般用于整个页面的排版布局，它按四个方向分为四块区域，和中间正文部分，四个区域都可以自动隐藏，其实这个控件的核心功能就是用到了&amp;ldquo;border&amp;rdquo;方式的布局，下面看看生成代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.onReady(function () {&lt;br/&gt;    Ext.create('Ext.container.Viewport', {&lt;br/&gt;        layout: 'border',&lt;br/&gt;        items: [{&lt;br/&gt;            region: 'north',&lt;br/&gt;            html: '&amp;lt;h1&amp;gt;这里放置logo&amp;lt;/h1&amp;gt;',&lt;br/&gt;            xtype: "panel",&lt;br/&gt;            title: "标题",&lt;br/&gt;            autoHeight: true,&lt;br/&gt;            border: false,&lt;br/&gt;            margins: '0 0 5 0'&lt;br/&gt;        }, {&lt;br/&gt;            region: 'west',&lt;br/&gt;            collapsible: true,&lt;br/&gt;            title: '左侧导航',&lt;br/&gt;            xtype: 'panel',&lt;br/&gt;            width: 200,&lt;br/&gt;            autoScroll: true&lt;br/&gt;        }, {&lt;br/&gt;            region: 'center',&lt;br/&gt;            xtype: 'tabpanel',&lt;br/&gt;            activeItem: 0,&lt;br/&gt;            items: {&lt;br/&gt;                title: '首页',&lt;br/&gt;                html: '这里是首页正文内容'&lt;br/&gt;            }&lt;br/&gt;        }, {&lt;br/&gt;            region: 'south',&lt;br/&gt;            title: '底部',&lt;br/&gt;            collapsible: true,          //允许折叠&lt;br/&gt;            html: '这里放置版权信息',&lt;br/&gt;            split: true,&lt;br/&gt;            height: 100,&lt;br/&gt;            minHeight: 100&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;});&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011122008162435.jpg" alt="" /&gt;&lt;/p&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2294118.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/20/2294118.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/19/2289532.html</id><title type="text">ExtJs4 笔记（8） Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件</title><summary type="text">《回到系列目录本篇要登场的有三个控件，分别是滚轴控件、进度条控件和编辑控件。一、滚轴控件 Ext.slider1.滚轴控件的定义下面我们定义三个具有代表意义滚轴控件，分别展示滚轴横向、纵向，以及单值、多值选择的特性：[html] &lt;h1&gt;滚轴控件&lt;/h1&gt; &lt;div class="content"&gt; &lt;h2&gt;横向，初始值50&lt;/h2&gt; &lt;div id="slider1"&gt;&lt;/div&gt; &lt;h2&gt;纵向，带提示&lt;/h2&gt; &lt;div id=&amp;quot</summary><published>2011-12-19T00:25:00Z</published><updated>2011-12-19T00:25:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/19/2289532.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/19/2289532.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇要登场的有三个控件，分别是滚轴控件、进度条控件和编辑控件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、滚轴控件 Ext.slider&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.滚轴控件的定义&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面我们定义三个具有代表意义滚轴控件，分别展示滚轴横向、纵向，以及单值、多值选择的特性：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;滚轴控件&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content"&amp;gt;&lt;br/&gt;        &amp;lt;h2&amp;gt;横向，初始值50&amp;lt;/h2&amp;gt;&lt;br/&gt;        &amp;lt;div id="slider1"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;br/&gt;        &amp;lt;h2&amp;gt;纵向，带提示&amp;lt;/h2&amp;gt;&lt;br/&gt;        &amp;lt;div id="slider2"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;br/&gt;         &amp;lt;h2&amp;gt;多值，自定义提示&amp;lt;/h2&amp;gt;&lt;br/&gt;        &amp;lt;div id="slider3"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //横向，初始值50&lt;br/&gt;    var slider1 = Ext.create('Ext.slider.Single', {&lt;br/&gt;        renderTo: 'slider1',&lt;br/&gt;        width: 214,&lt;br/&gt;        minValue: 0,&lt;br/&gt;        maxValue: 100,&lt;br/&gt;        value: 50&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //纵向，带提示&lt;br/&gt;    new Ext.create('Ext.slider.Single', {&lt;br/&gt;        renderTo: 'slider2',&lt;br/&gt;        height: 150,&lt;br/&gt;        minValue: 0,&lt;br/&gt;        maxValue: 20,&lt;br/&gt;        vertical: true,&lt;br/&gt;        plugins: new Ext.slider.Tip()&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //多值，自定义提示&lt;br/&gt;    var slider3 = Ext.create('Ext.slider.Multi', {&lt;br/&gt;        renderTo: 'slider3',&lt;br/&gt;        width: 214,&lt;br/&gt;        minValue: 0,&lt;br/&gt;        maxValue: 20,&lt;br/&gt;        values: [5, 12],&lt;br/&gt;        plugins: new Ext.slider.Tip({&lt;br/&gt;            getText: function (thumb) {&lt;br/&gt;                return Ext.String.format('当前：&amp;lt;b&amp;gt;{0}/20&amp;lt;/b&amp;gt;', thumb.value);&lt;br/&gt;            }&lt;br/&gt;        })&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.获取、设置滚轴控件的值&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;操作滚轴控件&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content"&amp;gt;&lt;br/&gt;    &amp;lt;button id="button1"&amp;gt;设置滚轴1的值为10&amp;lt;/button&amp;gt;&lt;br/&gt;    &amp;lt;button id="button2"&amp;gt;获取滚轴1的值&amp;lt;/button&amp;gt;&lt;br/&gt;    &amp;lt;button id="button3"&amp;gt;设置滚轴3的值为10,15&amp;lt;/button&amp;gt;&lt;br/&gt;    &amp;lt;button id="button4"&amp;gt;获取滚轴3的值集合&amp;lt;/button&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //设置滚轴1的值为10&lt;br/&gt;    Ext.fly("button1").on('click', function () {&lt;br/&gt;        slider1.setValue(10);&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //获取滚轴1的值&lt;br/&gt;    Ext.fly("button2").on('click', function () {&lt;br/&gt;        Ext.MessageBox.alert("获取值", "滚轴1的值：" + slider1.getValue());&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //设置滚轴3的值为10,15&lt;br/&gt;    Ext.fly("button3").on('click', function () {&lt;br/&gt;        slider3.setValue(0, 10);&lt;br/&gt;        slider3.setValue(1, 15);&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    //获取滚轴3的值集合&lt;br/&gt;    Ext.fly("button4").on('click', function () {&lt;br/&gt;        Ext.MessageBox.alert("获取值", "滚轴3的值集合：" + slider3.getValues());&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;3.效果展示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121522551427.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;二、进度条控件 Ext.ProgressBar&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.加载进度条&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;div class="content"&amp;gt;&lt;br/&gt;        &amp;lt;button id="button1"&amp;gt;执行&amp;lt;/button&amp;gt;&lt;br/&gt;        &amp;lt;div id="p1" style="width: 300px;"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //加载进度条&lt;br/&gt;    var progressBar1 = Ext.create("Ext.ProgressBar", {&lt;br/&gt;        id: "progressBar1",&lt;br/&gt;        text: '准备中...',&lt;br/&gt;        renderTo: 'p1'&lt;br/&gt;    });&lt;br/&gt;    Ext.fly("button1").on('click', function () {&lt;br/&gt;        //模拟加载环境&lt;br/&gt;        var f = function (v) {&lt;br/&gt;            return function () {&lt;br/&gt;                var i = v / 12;&lt;br/&gt;                progressBar1.updateProgress(i, '进度：' + v + '/12');&lt;br/&gt;                if (v == 12) {&lt;br/&gt;                    Ext.Msg.alert("提示", "加载完毕！");&lt;br/&gt;                    progressBar1.reset();   //复位进度条&lt;br/&gt;                    progressBar1.updateText("完成。");&lt;br/&gt;                }&lt;br/&gt;            };&lt;br/&gt;        };&lt;br/&gt;        for (var i = 1; i &amp;lt; 13; i++) {&lt;br/&gt;            setTimeout(f(i), i * 200);&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.等候进度条&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;div class="content"&amp;gt;&lt;br/&gt;        &amp;lt;button id="button2"&amp;gt;执行&amp;lt;/button&amp;gt;&lt;br/&gt;        &amp;lt;div id="p2"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;span id="p2text"&amp;gt;&amp;lt;/span&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //等候进度条&lt;br/&gt;    var pbar2 = Ext.create("Ext.ProgressBar", {&lt;br/&gt;        id: "progressBar2",&lt;br/&gt;        renderTo: 'p2',&lt;br/&gt;        width: '150px'&lt;br/&gt;    });&lt;br/&gt;    pbar2.on('update', function (val) {&lt;br/&gt;        //每次更新可以执行的动作&lt;br/&gt;        Ext.fly('p2text').dom.innerHTML += '&amp;gt;';&lt;br/&gt;    });&lt;br/&gt;    Ext.fly("button2").on('click', function () {&lt;br/&gt;        Ext.fly('p2text').update('正在启动windows2000：');&lt;br/&gt;        pbar2.wait({&lt;br/&gt;            interval: 200,             //每次更新的间隔周期&lt;br/&gt;            duration: 5000,             //进度条运作时间的长度，单位是毫秒&lt;br/&gt;            increment: 5,               //进度条每次更新的幅度大小,表示走完一轮要几次（默认为10）。&lt;br/&gt;            fn: function () {           //当进度条完成自动更新后执行的回调函数。该函数没有参数。&lt;br/&gt;                Ext.fly('p2text').update('完成。');&lt;br/&gt;            }&lt;br/&gt;        });&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;3.等候进度条，等待第三方事件&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;div class="content"&amp;gt;&lt;br/&gt;        &amp;lt;button id="button3"&amp;gt;执行&amp;lt;/button&amp;gt;&lt;br/&gt;        &amp;lt;div id="p3"&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;        &amp;lt;span id="p3text"&amp;gt;&amp;lt;/span&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //等候进度条，当第三方事件结束时，停止。&lt;br/&gt;    var pbar3 = Ext.create("Ext.ProgressBar", {&lt;br/&gt;        renderTo: 'p3',&lt;br/&gt;        width: '250px'&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    Ext.fly("button3").on('click', function () {&lt;br/&gt;        pbar3.wait({&lt;br/&gt;            interval: 100,&lt;br/&gt;            increment: 5&lt;br/&gt;        });&lt;br/&gt;        Ext.fly('p3text').update('第三方事件正在执行，请稍候....');&lt;br/&gt;&lt;br/&gt;        setTimeout(function () {&lt;br/&gt;            pbar3.reset();&lt;br/&gt;            Ext.fly('p3text').update('执行完毕.');&lt;br/&gt;        }, 5000);&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;4.效果展示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121522572535.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、编辑控件 Ext.Editor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;编辑控件可以作用在一般html元素或者其他ext基本控件上，从而然这些基本元素和控件具备了编辑某些值的能力。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.用文本框编辑普通文本&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面通过一个编辑控件作用在span标签上，双击该标签即可编辑该标签的文本类容。&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;用文本框编辑普通文本&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content"&amp;gt;&lt;br/&gt;    &amp;lt;span id="span1"&amp;gt;请双击我修改文字&amp;lt;/span&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //用文本框编辑普通文本&lt;br/&gt;    var editor1 = new Ext.Editor({&lt;br/&gt;        shadow: false,&lt;br/&gt;        completeOnEnter: true,      //按回车时自动完成&lt;br/&gt;        cancelOnEsc: true,          //按ESC自动退出编辑&lt;br/&gt;        updateEl: true,            //有变化时更新&lt;br/&gt;        ignoreNoChange: true,       //不理会没有变化的情况&lt;br/&gt;        listeners: {&lt;br/&gt;            complete: function (editor, value, oldValue) {&lt;br/&gt;                Ext.Msg.alert('文本被改变', "从&amp;ldquo;" + oldValue + "&amp;rdquo; 变为&amp;ldquo;" + value + "&amp;rdquo;");&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        field: {&lt;br/&gt;            allowBlank: false,&lt;br/&gt;            xtype: 'textfield',&lt;br/&gt;            width: 150,&lt;br/&gt;            selectOnFocus: true&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    Ext.get("span1").on('dblclick', function (event, span1_dom) {&lt;br/&gt;        editor1.startEdit(span1_dom);&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121522581161.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;处于编辑状态时：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121522583186.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.用下拉列表编辑&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这个例子要修改Ext.Panel控件的标题。&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        &amp;lt;h1&amp;gt;用下拉列表编辑&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div class="content" id="div2"&amp;gt;&lt;br/&gt;    &lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //用下拉列表编辑&lt;br/&gt;    var editor2 = new Ext.Editor({&lt;br/&gt;        shadow: false,&lt;br/&gt;        completeOnEnter: true,&lt;br/&gt;        cancelOnEsc: true,&lt;br/&gt;        updateEl: true,&lt;br/&gt;        ignoreNoChange: true,&lt;br/&gt;        listeners: {&lt;br/&gt;            complete: function (editor, value, oldValue) {&lt;br/&gt;                Ext.Msg.alert('文本被改变', "从&amp;ldquo;" + oldValue + "&amp;rdquo; 变为&amp;ldquo;" + value + "&amp;rdquo;");&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        field: {&lt;br/&gt;            width: 110,&lt;br/&gt;            id: "combo1",&lt;br/&gt;            //renderTo: 'div2',&lt;br/&gt;            triggerAction: 'all',&lt;br/&gt;            xtype: 'combo',&lt;br/&gt;            editable: false,&lt;br/&gt;            forceSelection: true,&lt;br/&gt;            store: ['下拉项1', '下拉项2', '下拉项3']&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var panel = new Ext.Panel({&lt;br/&gt;        renderTo: "div2",&lt;br/&gt;        width: 200,&lt;br/&gt;        height: 50,&lt;br/&gt;        collapsible: true,&lt;br/&gt;        layout: 'fit',&lt;br/&gt;        title: '请双击标题',&lt;br/&gt;        listeners: {&lt;br/&gt;            afterrender: function (panel) {&lt;br/&gt;                panel.header.titleCmp.textEl.on('dblclick', function (event, label1_dom) {&lt;br/&gt;                    editor2.startEdit(label1_dom);&lt;br/&gt;                });&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121522585529.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;处于编辑状态时：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121522591581.jpg" alt="" /&gt;&lt;/p&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2289532.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/19/2289532.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/16/2286837.html</id><title type="text">ExtJs4 笔记（7） Ext.tip.ToolTip 提示</title><summary type="text">《回到系列目录本篇介绍提示控件，ExtJs支持两种方式定义提示，可以支持普通html元素和一般的ExtJs UI控件。一、基本提示 Ext.tip.ToolTip1.最简单的提示下面通过代码定义一个最简单的提示，首先在HTML加入一个div，我们要实现当鼠标移动到这个div上时，自动出现提示，如下是html内容：[html]&lt;div id="tip1" class="TipDiv"&gt;普通提示&lt;/div&gt;接着在js中添加如下代码：[Js] Ext.create('Ext.tip.ToolTip', { target:</summary><published>2011-12-16T00:16:00Z</published><updated>2011-12-16T00:16:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/16/2286837.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/16/2286837.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇介绍提示控件，ExtJs支持两种方式定义提示，可以支持普通html元素和一般的ExtJs UI控件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、基本提示 Ext.tip.ToolTip&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.最简单的提示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;下面通过代码定义一个最简单的提示，首先在HTML加入一个div，我们要实现当鼠标移动到这个div上时，自动出现提示，如下是html内容：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip1" class="TipDiv"&amp;gt;普通提示&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;接着在js中添加如下代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        target: 'tip1',&lt;br/&gt;        html: '最简单的提示'&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;OK,第一个提示已经添加成功，我们来预览一下效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321312535.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.可关闭的提示&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip2" class="TipDiv"&amp;gt;不自动隐藏&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        target: 'tip2',&lt;br/&gt;        html: '请点击关闭按钮',&lt;br/&gt;        title: '标题',&lt;br/&gt;        autoHide: false,&lt;br/&gt;        closable: true,&lt;br/&gt;        draggable: true             //可以允许被拖动&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果如下，鼠标移移出后提示不消失，单击叉即可关闭：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321320655.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.Ajax提示，提示的内容来自服务端&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip3" class="TipDiv"&amp;gt; Ajax提示&amp;lt;/div&amp;gt; &lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        target: 'tip3',&lt;br/&gt;        width: 200,&lt;br/&gt;        autoLoad: { url: 'AjaxTipData', params: { data: "测试参数"} },&lt;br/&gt;        dismissDelay: 15000         //15秒后自动隐藏&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;在服务端通过MVC控制层action来返回提示内容，代码如下：&lt;/p&gt;[c#]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;        public ContentResult AjaxTipData(string data)&lt;br/&gt;        {&lt;br/&gt;            return Content("&amp;lt;font color='red'&amp;gt;这是Ajax提示信息：&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;客户端参数：" + data);&lt;br/&gt;        }&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321323290.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4.提示跟随鼠标移动&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip4" class="TipDiv"&amp;gt;跟随鼠标&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        target: 'tip4',&lt;br/&gt;        html: '跟随鼠标的提示',&lt;br/&gt;        trackMouse: true            //  跟随鼠标移动&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321334229.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5.带箭头的提示&lt;/strong&gt;&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip6" class="TipDiv"&amp;gt;指定提示方向&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        target: 'tip6',&lt;br/&gt;        anchor: 'buttom',           //指定箭头的指向 top,left,right&lt;br/&gt;        width: 120,&lt;br/&gt;        anchorOffset: 50,           //指定箭头的位置&lt;br/&gt;        html: '带箭头的提示，并指定方向'&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321343245.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5.图文并茂的提示内容&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在提示内容中可以加入图片，超链接等以及如何html元素，还可以自定义提示标题：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip7" class="TipDiv"&amp;gt; 高级自定义&amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;div style="display:none;"&amp;gt;&lt;br/&gt;        &amp;lt;div id="tipContent"&amp;gt;&lt;br/&gt;            &amp;lt;ul&amp;gt;&lt;br/&gt;                &amp;lt;li&amp;gt;提示项1&amp;lt;/li&amp;gt;&lt;br/&gt;                &amp;lt;li&amp;gt;提示项2&amp;lt;/li&amp;gt;&lt;br/&gt;                &amp;lt;li&amp;gt;提示项3&amp;lt;/li&amp;gt;&lt;br/&gt;                &amp;lt;li&amp;gt;提示项4&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;/ul&amp;gt;&lt;br/&gt;            &amp;lt;img src="http://www.cnblogs.com/Img/Ext/house.jpg" alt="图片" /&amp;gt;&lt;br/&gt;        &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        title: '&amp;lt;a href="#"&amp;gt;链接式标题&amp;lt;/a&amp;gt;',&lt;br/&gt;        id: 'toolTip7',&lt;br/&gt;        target: 'tip7',&lt;br/&gt;        anchor: 'left',&lt;br/&gt;        html: null,&lt;br/&gt;        width: 415,&lt;br/&gt;        autoHide: false,&lt;br/&gt;        closable: true,&lt;br/&gt;        contentEl: 'tipContent',    //用id为tipContent的html标签内容作为提示信息&lt;br/&gt;        listeners: {&lt;br/&gt;            'render': function () {&lt;br/&gt;                this.header.on('click', function (e) {&lt;br/&gt;                    e.stopEvent();&lt;br/&gt;                    Ext.Msg.alert('提示', '标题被点击.');&lt;br/&gt;                    Ext.getCmp('toolTip7').hide();&lt;br/&gt;                }, this, { delegate: 'a' });&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321351175.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、快速提示 Ext.tip.QuickTip&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;快速提示通过在html上添加特定的属性就可以体现出来，比较方便，只需要在代码里面通过如下方式初始化：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Ext.QuickTips.init();&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;下面看看使用方式：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;div id="tip5" class="TipDiv" data-qtip="用HTML属性表示的提示" data-qtitle="标题"&amp;gt; 快速提示&amp;lt;/div&amp;gt; &lt;br/&gt;&amp;lt;div id="tip52" class="TipDiv" data-qtip="设置了宽度、位置的快速提示" data-qwidth="400" data-qalign="tl-br"&amp;gt; 快速提示2&amp;lt;/div&amp;gt; &lt;br/&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;data-qtip:&lt;/strong&gt;设置提示正文内容。&lt;br /&gt;&lt;strong&gt;data-qtitle:&lt;/strong&gt;设置提示的标题。&lt;br /&gt;&lt;strong&gt;data-qwidth:&lt;/strong&gt;设置提示的宽度。&lt;br /&gt;&lt;strong&gt;data-qalign:&lt;/strong&gt;表示用提示的一个基准点，对应到原件的哪个基准点。例如：tl-br表示用提示的左上角，对应到原件的右下角。&lt;/p&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321364531.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321372629.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;三、在extjs控件上使用提示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1.按钮上的快速提示&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先也要运行如下代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt; Ext.QuickTips.init();&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;这样按钮配置项就可以使用&amp;ldquo;tooltip&amp;rdquo;了：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("tipdiv"),&lt;br/&gt;        text: "按钮上的快速提示",&lt;br/&gt;        tooltip: "提示信息"&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321384556.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.按钮上的自定义提示&lt;/strong&gt;&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    //按钮上的自定义提示&lt;br/&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("tipdiv"),&lt;br/&gt;        text: "按钮上的自定义提示",&lt;br/&gt;        id: "bt1"&lt;br/&gt;    });&lt;br/&gt;    Ext.create('Ext.tip.ToolTip', {&lt;br/&gt;        target: 'bt1',&lt;br/&gt;        anchor: 'buttom',&lt;br/&gt;        width: 120,&lt;br/&gt;        anchorOffset: 50,&lt;br/&gt;        html: '按钮上的自定义提示信息'&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011121321390689.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2286837.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/16/2286837.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/14/2275362.html</id><title type="text">ExtJs4 笔记（6） Ext.MessageBox 消息对话框</title><summary type="text">《回到系列目录本篇演示消息对话框的用法，ExtJs封装了可能用到的各类消息框，并支持自定义的配置。如下是用到的html：[html]&lt;h1&gt;各种消息框&lt;/h1&gt;&lt;div id="div1" class="content"&gt;&lt;button id="bt1" type="button" &gt;Confirm&lt;/button&gt;&lt;button id="bt2" type="button" &gt;Prompt&lt;/bu</summary><published>2011-12-14T00:10:00Z</published><updated>2011-12-14T00:10:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/14/2275362.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/14/2275362.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;本篇演示消息对话框的用法，ExtJs封装了可能用到的各类消息框，并支持自定义的配置。&lt;/p&gt;&lt;p&gt;如下是用到的html：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&amp;lt;h1&amp;gt;各种消息框&amp;lt;/h1&amp;gt;&lt;br/&gt;&amp;lt;div id="div1" class="content"&amp;gt;&lt;br/&gt;&amp;lt;button id="bt1" type="button" &amp;gt;Confirm&amp;lt;/button&amp;gt;&lt;br/&gt;&amp;lt;button id="bt2" type="button" &amp;gt;Prompt&amp;lt;/button&amp;gt;&lt;br/&gt;&amp;lt;button id="bt3" type="button" &amp;gt;DIY窗口&amp;lt;/button&amp;gt;&lt;br/&gt;&amp;lt;button id="bt4" type="button" &amp;gt;进度条&amp;lt;/button&amp;gt;&lt;br/&gt;&amp;lt;button id="bt5" type="button" &amp;gt;进度条2&amp;lt;/button&amp;gt;&lt;br/&gt;&amp;lt;button id="bt6" type="button" &amp;gt;wait&amp;lt;/button&amp;gt;&lt;br/&gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;一、警告对话框和确认对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;展示一个带&amp;ldquo;是&amp;rdquo;，&amp;ldquo;否&amp;rdquo;按钮的确认对话框。当单击按钮时，执行回调函数，获取按钮类型，并弹出一个警告对话框。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.get("bt1").on("click", function () {&lt;br/&gt;        Ext.MessageBox.confirm("标题", "详细信息内容", function (btn) {&lt;br/&gt;            Ext.Msg.alert("提示", "你点击了" + btn + "按钮");&lt;br/&gt;        });&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120412591727.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120412594967.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;二、输入对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;展示一个带文本框的对话框，可以供用户录入。单击按钮后可以获取文本框的内容。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.get("bt2").on("click", function () {&lt;br/&gt;        Ext.MessageBox.prompt(&lt;br/&gt;        "标题",&lt;br/&gt;        "详细信息内容",&lt;br/&gt;        function (btn, text) {&lt;br/&gt;            Ext.Msg.alert("提示", "你点击了" + btn + "按钮,获取的文本：" + text);&lt;br/&gt;        },&lt;br/&gt;        this,&lt;br/&gt;        true,       //表示文本框为多行文本框&lt;br/&gt;        "初始文本");&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120413004925.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;三、自定义DIY对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;展示一个自定义的对话框，可以定义图标样式，按钮组的类型，是否带文本框，是否带进度条等信息。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.get("bt3").on("click", function () {&lt;br/&gt;        Ext.MessageBox.show({&lt;br/&gt;            title: "标题",&lt;br/&gt;            msg: "详细信息内容",&lt;br/&gt;            buttons: Ext.MessageBox.YESNOCANCEL,    //对话框的按钮组合&lt;br/&gt;            multiline: false,                       //有文本框时，是否为多行文本框&lt;br/&gt;            closable: false,                        //是否可关闭&lt;br/&gt;            prompt: true,&lt;br/&gt;            icon: Ext.MessageBox.WARNING,&lt;br/&gt;            iconCls: "add16",&lt;br/&gt;            width: 400,&lt;br/&gt;            proxyDrag: true,&lt;br/&gt;            value: "初始文本",&lt;br/&gt;            progress: true,&lt;br/&gt;            progressText: "加载中..",&lt;br/&gt;            animateTarget: "bt3"&lt;br/&gt;        });&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120413013730.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;四、加载进度条对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;展示一个带加载进度条的对话框，提示当前执行任务的进度信息。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.get('bt4').on('click', function () {&lt;br/&gt;        Ext.MessageBox.show({&lt;br/&gt;            title: '加载窗口',&lt;br/&gt;            msg: '详细信息内容',&lt;br/&gt;            progressText: '加载中...',&lt;br/&gt;            width: 300,&lt;br/&gt;            progress: true,&lt;br/&gt;            closable: false,&lt;br/&gt;            animateTarget: 'bt4'&lt;br/&gt;        });&lt;br/&gt;&lt;br/&gt;        //模拟加载环境&lt;br/&gt;        var f = function (v) {&lt;br/&gt;            return function () {&lt;br/&gt;                if (v == 12) {&lt;br/&gt;                    Ext.MessageBox.hide();&lt;br/&gt;                    Ext.Msg.alert("提示", "加载完毕！");&lt;br/&gt;                } else {&lt;br/&gt;                    var i = v / 11;&lt;br/&gt;                    Ext.MessageBox.updateProgress(i, Math.round(100 * i) + '% 完成');&lt;br/&gt;                }&lt;br/&gt;            };&lt;br/&gt;        };&lt;br/&gt;        for (var i = 1; i &amp;lt; 13; i++) {&lt;br/&gt;            setTimeout(f(i), i * 200);&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120413030466.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;五、等待进度条对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;展示等待进度条的对话框，提示用户当前正在等待某一任务执行。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.get('bt5').on('click', function () {&lt;br/&gt;        Ext.MessageBox.show({&lt;br/&gt;            msg: '正在保存数据..',&lt;br/&gt;            progressText: '保存中...',&lt;br/&gt;            width: 300,&lt;br/&gt;            wait: true,&lt;br/&gt;            waitConfig: { interval: 200 },&lt;br/&gt;            icon: 'download',&lt;br/&gt;            animateTarget: 'bt5'&lt;br/&gt;        });&lt;br/&gt;        setTimeout(function () {&lt;br/&gt;            Ext.MessageBox.hide();&lt;br/&gt;            Ext.Msg.alert("提示", "保存完毕！");&lt;br/&gt;        }, 3000);&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120413041340.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;六、基本的等待对话框&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这里演示基本的等待对话框的实现方式。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.get('bt6').on('click', function () {&lt;br/&gt;        Ext.MessageBox.wait("详细信息内容", "标题", {&lt;br/&gt;            interval: 100       //进度条加载速度&lt;br/&gt;        });&lt;br/&gt;        setTimeout(function () {&lt;br/&gt;            Ext.MessageBox.hide();&lt;br/&gt;            Ext.Msg.alert("提示", "完毕！");&lt;br/&gt;        }, 35000);&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;p&gt;效果展示：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120413043318.jpg" alt="" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2275362.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/14/2275362.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lipan/archive/2011/12/13/2274797.html</id><title type="text">ExtJs4 笔记（5） Ext.Button 按钮</title><summary type="text">《回到系列目录从本篇开始讲基础控件，ExtJs对所有的UI控件都有它自己的一套封装。本篇要讲到的是ExtJs的按钮。主要包括按钮事件、带分割线、带图标、带菜单的按钮，下拉选项式按钮和按钮组合等。我们先看看效果图:预览如下是用到的html：[html] &lt;h1&gt; 三种方式实现事件： &lt;/h1&gt; &lt;div id="div1" class="content"&gt; &lt;ul&gt; &lt;li id="li1"&gt;&lt;/li&gt; &lt;li id="li2"&gt;&amp;l</summary><published>2011-12-13T00:07:00Z</published><updated>2011-12-13T00:07:00Z</updated><author><name>lipan</name><uri>http://www.cnblogs.com/lipan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lipan/archive/2011/12/13/2274797.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lipan/archive/2011/12/13/2274797.html"/><content type="html">&lt;div class="myContent"&gt;&lt;div style="height: 30px;"&gt;&lt;a style="margin-right: 5px; float: right;" href="http://www.cnblogs.com/lipan/archive/2011/11/30/2269793.html"&gt;《回到系列目录&lt;/a&gt;&lt;/div&gt;&lt;p&gt;从本篇开始讲基础控件，ExtJs对所有的UI控件都有它自己的一套封装。本篇要讲到的是ExtJs的按钮。主要包括按钮事件、带分割线、带图标、带菜单的按钮，下拉选项式按钮和按钮组合等。我们先看看效果图:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;预览&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/99414/2011120316384433.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;如下是用到的html：&lt;/p&gt;[html]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    &amp;lt;h1&amp;gt;&lt;br/&gt;        三种方式实现事件：&lt;br/&gt;    &amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div1" class="content"&amp;gt;&lt;br/&gt;        &amp;lt;ul&amp;gt;&lt;br/&gt;            &amp;lt;li id="li1"&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li id="li2"&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;            &amp;lt;li id="li3"&amp;gt;&amp;lt;/li&amp;gt;&lt;br/&gt;        &amp;lt;/ul&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;h1&amp;gt;&lt;br/&gt;        带图标菜单：&lt;br/&gt;    &amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div2" class="content"&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;h1&amp;gt;&lt;br/&gt;        带分割线的按钮&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div3" class="content"&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;h1&amp;gt;&lt;br/&gt;        菜单式按钮&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div4" class="content"&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;    &amp;lt;h1&amp;gt;&lt;br/&gt;        按钮组合&amp;lt;/h1&amp;gt;&lt;br/&gt;    &amp;lt;div id="div5" class="content"&amp;gt;&lt;br/&gt;    &amp;lt;/div&amp;gt;&lt;br/&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;一、基本按钮，三种方式实现按钮事件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这里介绍了最基本的按钮生成代码，第一个按钮具备弹起和按下两种状态，三个按钮分别别设置成三种大小。每个按钮的单击事件都是通过一种新的实现方式。下面看看Js代码：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("li1"),&lt;br/&gt;        text: "事件实现1",&lt;br/&gt;        allowDepress: true,     //是否允许按钮被按下的状态&lt;br/&gt;        enableToggle: true,     //是否允许按钮在弹起和按下两种状态中切换&lt;br/&gt;        handler: function () {&lt;br/&gt;            Ext.Msg.alert("提示", "第一个事件");&lt;br/&gt;        },&lt;br/&gt;        id: "bt1"&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("li2"),&lt;br/&gt;        text: "事件实现2",&lt;br/&gt;        listeners: { "click": function () {&lt;br/&gt;            Ext.Msg.alert("提示", "第二个事件");&lt;br/&gt;        }&lt;br/&gt;        },&lt;br/&gt;        id: "bt2",&lt;br/&gt;        scale: 'medium'&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;    var bt3 = Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("li3").dom,&lt;br/&gt;        text: "事件实现3",&lt;br/&gt;        id: "bt3",&lt;br/&gt;        scale: 'large'&lt;br/&gt;    });&lt;br/&gt;    bt3.on("click", function () {&lt;br/&gt;        Ext.Msg.alert("提示", "第三个事件");&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;二、带图标菜单&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;按钮可以带图标和菜单，我们可以在配置项里面配置：&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("div2"),&lt;br/&gt;        id: "bt4",&lt;br/&gt;        text: "带菜单带图标",&lt;br/&gt;        iconCls: "add16",&lt;br/&gt;        menu:&lt;br/&gt;        {&lt;br/&gt;            items: [&lt;br/&gt;                {&lt;br/&gt;                    text: '选项1'&lt;br/&gt;                }, {&lt;br/&gt;                    text: '选项2'&lt;br/&gt;                }, {&lt;br/&gt;                    text: '选项3',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        Ext.Msg.alert("提示", "来自菜单的消息");&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;            ]&lt;br/&gt;        }&lt;br/&gt;    }).showMenu();&lt;br/&gt;&lt;br/&gt;    Ext.create("Ext.Button", {&lt;br/&gt;        renderTo: Ext.get("div2"),&lt;br/&gt;        id: "bt5",&lt;br/&gt;        text: "上图标下菜单",&lt;br/&gt;        iconCls: "add16",&lt;br/&gt;        iconAlign: 'top',&lt;br/&gt;        menu:&lt;br/&gt;        {&lt;br/&gt;            items: [&lt;br/&gt;                {&lt;br/&gt;                    text: '选项1'&lt;br/&gt;                }, {&lt;br/&gt;                    text: '选项2'&lt;br/&gt;                }, {&lt;br/&gt;                    text: '选项3',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        Ext.Msg.alert("提示", "来自菜单的消息");&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;            ]&lt;br/&gt;        },&lt;br/&gt;        arrowAlign: 'bottom'&lt;br/&gt;&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;三、带分割线的按钮&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;注意的地方：分割线的按钮来自于类Ext.SplitButton&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create("Ext.button.Split", {&lt;br/&gt;        renderTo: Ext.get("div3"),&lt;br/&gt;        text: "右图标下菜单",&lt;br/&gt;        iconCls: "add16",&lt;br/&gt;        iconAlign: 'right',&lt;br/&gt;        menu:&lt;br/&gt;        {&lt;br/&gt;            items: [&lt;br/&gt;                {&lt;br/&gt;                    text: '选项1'&lt;br/&gt;                }, {&lt;br/&gt;                    text: '选项2'&lt;br/&gt;                }, {&lt;br/&gt;                    text: '选项3',&lt;br/&gt;                    handler: function () {&lt;br/&gt;                        Ext.Msg.alert("提示", "来自菜单的消息");&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;            ]&lt;br/&gt;        },&lt;br/&gt;        arrowAlign: 'bottom'&lt;br/&gt;&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;四、菜单式按钮&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;按钮式菜单Ext.CycleButton与下拉不同的是，它具备选中状态，当选中下拉项时，选中文本会相应变化。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;    Ext.create('Ext.button.Cycle', {&lt;br/&gt;        renderTo: Ext.get("div4"),&lt;br/&gt;        showText: true,&lt;br/&gt;        prependText: '请选择：',&lt;br/&gt;        menu:&lt;br/&gt;        {&lt;br/&gt;            items: [{&lt;br/&gt;                text: '选项1',&lt;br/&gt;                checked: true&lt;br/&gt;            }, {&lt;br/&gt;                text: '选项2'&lt;br/&gt;            }, {&lt;br/&gt;                text: '选项3'&lt;br/&gt;            }]&lt;br/&gt;        },&lt;br/&gt;        changeHandler: function (btn, item) {&lt;br/&gt;            Ext.Msg.alert('修改选择', item.text);&lt;br/&gt;        }&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;四、按钮组合&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;定义了一组按钮，并可以控制按钮排版。&lt;/p&gt;[Js]&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;   Ext.create("Ext.ButtonGroup",{&lt;br/&gt;        renderTo: Ext.get("div5"),&lt;br/&gt;        title: "按钮组合",&lt;br/&gt;        columns: 3,&lt;br/&gt;        //defaultType:'splitbutton',&lt;br/&gt;        items: [{&lt;br/&gt;            text: '按钮1',&lt;br/&gt;            iconCls: 'add16',&lt;br/&gt;            scale: 'large',&lt;br/&gt;            rowspan: 2&lt;br/&gt;        }, {&lt;br/&gt;            text: '按钮2', iconCls: 'add16', rowspan: 2, scale: 'large'&lt;br/&gt;        }, {&lt;br/&gt;            text: '按钮3', iconCls: 'add16'&lt;br/&gt;        }, {&lt;br/&gt;            xtype: 'splitbutton', text: '分割线按钮', iconCls: 'add16', menu: [{ text: '菜单1'}]&lt;br/&gt;        }]&lt;br/&gt;    });&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="copy"&gt;作者：李盼（Lipan）&lt;br /&gt;出处：&lt;a href="http://www.cnblogs.com/lipan/"&gt;[Lipan]&lt;/a&gt; （&lt;a href="http://www.cnblogs.com/lipan/"&gt;http://www.cnblogs.com/lipan/&lt;/a&gt;）&lt;br /&gt;版权声明：本文的版权归作者与博客园共有。转载时须注明本文的详细链接，否则作者将保留追究其法律责任。&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/lipan/aggbug/2274797.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lipan/archive/2011/12/13/2274797.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
