??xml version="1.0" encoding="utf-8" standalone="yes"?>久久青草伊人,亚洲区在线播放,国产999精品久久http://www.aygfsteel.com/caizh2009/category/39392.html与大家共同成?/description>zh-cnWed, 24 Jun 2009 12:27:11 GMTWed, 24 Jun 2009 12:27:11 GMT60EXT 目例子http://www.aygfsteel.com/caizh2009/articles/283910.html菜毛毛菜毛毛Wed, 24 Jun 2009 03:58:00 GMThttp://www.aygfsteel.com/caizh2009/articles/283910.htmlhttp://www.aygfsteel.com/caizh2009/comments/283910.htmlhttp://www.aygfsteel.com/caizh2009/articles/283910.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/283910.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/283910.html 

商N通是集采购、销售、库存管理于一体,采用etmvc和extjs开发的一套管理程序?/p>

演示地址Q?a target="_blank">http://www.etmvc.cn/trade

pȝ前端采用iframe的Ş式分隔各个功能模块,特点是编写控制JS代码单,~点也是显而易见的?/p>

关于~写单页面的extjsE序Q请见另一个案例的q销?/a>pȝ演示?/p>

q行环境QJDK6, TOMCAT6, MYSQL5?/p>

数据库名QtradeQ登录帐号密码:root/soft123456?/p>

pȝd时帐号密码:admin/admin?/p>


trade.png (174532字节)
下蝲ơ数Q?52

trade.war (3952992字节)
下蝲ơ数Q?54

trade.rar (1380466字节)
下蝲ơ数Q?93

trade.sql (44400字节)
下蝲ơ数Q?65


菜毛毛 2009-06-24 11:58 发表评论
]]>
《轻松搞定Extjs》顺利发?(?http://www.aygfsteel.com/caizh2009/articles/282290.html菜毛毛菜毛毛Mon, 15 Jun 2009 04:25:00 GMThttp://www.aygfsteel.com/caizh2009/articles/282290.htmlhttp://www.aygfsteel.com/caizh2009/comments/282290.htmlhttp://www.aygfsteel.com/caizh2009/articles/282290.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/282290.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/282290.html《轻松搞定Extjs》顺利发?/a>
《{载?br />
PDF下蝲地址Q?a title="下蝲点击q里" >下蝲点击q里


下面是书c目录:

?nbsp; ?nbsp;   1
W一章:?nbsp;   6
W二章:准备与资?nbsp;   9
一、下?nbsp;   9
二、拦路虎    9
三、布|环?nbsp;   11
四、SpketIDE    12
五、资?nbsp;   16
六、小l?nbsp;   16
W三章:Ext OOP基础    17
一、javascriptcȝ定义    17
二、Extjs命名I间的定?nbsp;   17
三、Extjs OOP    17
四、配|?config)选项    19
五、Ext.apply()和Ext.applyIf()    20
六、小l?nbsp;   21
W四章:消息?nbsp;   22
一、话说消息框    22
二、最单的消息框——提C框    23
三、输入框    23
四、确认框    24
五、自定义消息?nbsp;   24
六、进度条对话?nbsp;   25
七、让消息框飞出来    26
八、小l?nbsp;   27
W五章:面与脚本完全分?nbsp;   28
一、Extjs是脚本的世界    28
二、Ext.onReady事g    28
三、来自Extjs的问?nbsp;   29
四、让界面动v?nbsp;   29
五、Ext.Fxc?nbsp;   30
六、Ext.ElementcM的动d?nbsp;   34
七、小l?nbsp;   35
W六章:元素操作与模?nbsp;   36
一、重要也不重要的东西    36
二、Ext.DomHelperc?nbsp;   36
三、Ext.XTemplate    38
四、小l?nbsp;   39
W七章:格式?nbsp;   40
一、用户需要优U体验的内?nbsp;   40
二、Ext.util.Formatc?nbsp;   40
三、再谈XTemplete    44
四、如果连Format都不能满XTemplete的需要呢Q?nbsp;   45
五、小l?nbsp;   45
W八章:Extjslgl构    46
一、Extjs的组件结构远比我们想象的复杂    46
二、组件分c?nbsp;   47
三、组件的生命周期    48
四、组件渲染方法render    50
五、小l?nbsp;   52
W九章:按钮与日期选择?nbsp;   53
一、开始组件学习之?nbsp;   53
二、被设计得面目全非的按钮    53
三、日期选择器Ext.DatePicker    55
四、小l?nbsp;   56
W十章:数据与ComboBox    57
一、数据在q里是动?nbsp;   57
二、Ext.data.DataProxyc?nbsp;   57
三、Ext.data.DataReaderc?nbsp;   58
四、Ext.data.Storec?nbsp;   59
五、下拉列表框    60
六、得C拉列表框的?nbsp;   62
七、源代码    63
八、小l?nbsp;   64
W十一章:Ajax与ComboBox    65
一、Ajax    65
二、Ext.Ajaxc?nbsp;   65
三、Ajax文g上传    67
四、你来自q方    72
五、小l?nbsp;   73
W十二章Q分与ComboBox    74
一、关于分?nbsp;   74
二、从Servlet获取当前|?nbsp;   74
三、创建ComboBox    76
四、小l?nbsp;   77
W十三章Q面板(PanelQ?nbsp;   78
一、漂亮的H格从这里开?nbsp;   78
二、Ext.Panelc?nbsp;   78
三、小l?nbsp;   83
W十四章QPanel的子cZ—WindowH口    85
一、概q?nbsp;   85
二、Ext.Windowc?nbsp;   85
三、实现Window的最化功能    87
四、小l?nbsp;   91
W十五章QPanel的子cZ—FormPanel    93
一、无处不在的表单    93
二、Ext.form.FormPanelc?nbsp;   93
三、提交表单至服务?nbsp;   97
四、小l?nbsp;   100
W十六章Q更多表单组?nbsp;   102
一、您能说出哪些表单组件呢Q?nbsp;   102
二、表单组件关pd    102
三、组仉|选项介绍    103
四、完整源代码    107
五、小l?nbsp;   112
W十七章Q悬停提CZ验证    113
一、悬停提C?nbsp;   113
二、悬停提C的用法    114
三、表单组仉?nbsp;   118
四、小l?nbsp;   120
W十八章QFormPanel布局与初始化    121
一、布局概述    121
二、分割吧Q?nbsp;   121
三、表单初始化    126
四、小l?nbsp;   131
W十九章Q叹止的表格lg——GridPanel    132
一、表根{表格面?nbsp;   132
二、列模型与数?nbsp;   132
三、加强版的列模型    135
四、小l?nbsp;   138
W二十章Q行模型与Grid视图    139
一、行选择模型    139
二、Grid视图    143
三、小l?nbsp;   147
W二十一章:GridPanel分页    148
一、跑跑题——JSON-LIB    148
二、分工h    154
三、分?nbsp;   154
四、小l?nbsp;   157
W二十二章:GridPanel扩展    158
一、学会自学吧Q朋?nbsp;   158
二、带摘要的GridPanel    158
三、RowExpander    162
四、分lGridPanel    165
五、将带摘要的GridPanel和分lGridPanel合二Z    168
六、小l?nbsp;   171
W二十三章:可编辑的GridPanel——EditGridPanel    172
一、EditGridPanel    172
二、编辑订单数?nbsp;   173
三、保存修改的数据x务器    178
四、处理请?nbsp;   179
五、完整源代码    181
六、验?nbsp;   186
七、替换选择模型    187
八、小l?nbsp;   187
W二十四章:树与选择模型    188
一、树——TreePanel    188
二、创建简单的TreePanel    189
三、选择模型    192
四、MultiSelectionModel    195
五、带复选框的节?nbsp;   195
六、小l?nbsp;   199
W二十五章:动态操作树节点    200
一、概q?nbsp;   200
二、基本操?nbsp;   201
三、事?nbsp;   203
四、小l?nbsp;   204
W二十六章:q程获取节点数据    205
一?概述    205
二、异步加载解?nbsp;   206
三、小l?nbsp;   212
W二十七章:选项卡面李쀔—Ext.TabPanel    214
一、关于魅族和M8    214
二、TabPanel概述    214
三、TabPanel标签操作    216
四、标{ּ?nbsp;   217
五、小l?nbsp;   220
W二十八章:Viewportc?nbsp;   221
一、概q?nbsp;   221
二、Viewport的基本?nbsp;   221
三、小l?nbsp;   226
W二十九章:l合目    227
一、概q?nbsp;   227
二、数据库设计    228
三、持久层装    229
四、DAO    235
五、业务层    238
六、控制器Action    242
七、Spring配置文g    249
八、主界面    251
九、添加新员工    253
十、员工信息维?nbsp;   255
十一、效果图    261
十二、小l?nbsp;   262



菜毛毛 2009-06-15 12:25 发表评论
]]>
Javascript的调试利器:Firebug使用详解 http://www.aygfsteel.com/caizh2009/articles/279959.html菜毛毛菜毛毛Thu, 04 Jun 2009 02:13:00 GMThttp://www.aygfsteel.com/caizh2009/articles/279959.htmlhttp://www.aygfsteel.com/caizh2009/comments/279959.htmlhttp://www.aygfsteel.com/caizh2009/articles/279959.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/279959.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/279959.html阅读全文

菜毛毛 2009-06-04 10:13 发表评论
]]>
Tutorial:Javascript中的作用域(scopeQ是什?(一)(试用FIREBUG了解)http://www.aygfsteel.com/caizh2009/articles/271258.html菜毛毛菜毛毛Mon, 18 May 2009 02:32:00 GMThttp://www.aygfsteel.com/caizh2009/articles/271258.htmlhttp://www.aygfsteel.com/caizh2009/comments/271258.htmlhttp://www.aygfsteel.com/caizh2009/articles/271258.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/271258.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/271258.html

Tutorial:What is that Scope all about (Chinese)

From Learn About the Ext JavaScript Library

Jump to: navigation, search
Summary: 本教E讲解了Javascript中的作用域(scopeQ几个要点和变量可见度(variables visibilityQ等的问题?
Author: Jozef Sakalos(译者:Frank Cheung)
Published: August 27, 2007
Ext Version: 1.1+ / 2.0+
Languages: en.png English cn.png Chinese kr.png Korean tr.png Turkish it.png Italian

Contents

[hide]

事前准备

学习本教E的最x法是随手准备?a class="external text" title="http://firefox.com" rel="nofollow">Firefox中的工具Firebug。这样得您可以卛_试教程的例子?

如果机子上还没有FireFox和FireBugQ就应该快安装一套来用?/p>

定义

作用域scope
1.Q名词)某样事物执行、操作、拥有控制权的那么一个区?[1]
2. Q名词) ~写E序ӞE序之中变量的可见度Q例如,一个函数能否用另外一个函数所创徏的变量?a class="external autonumber" title="http://computing-dictionary.tfd.com/scope" rel="nofollow">[2]

可是q能够说明什么问题呢Q?每当有h在说“q是作用域的问题”?#8220;作用域搞错了”的时候,那就是说某个函数q行h的时候,找不到正变量的位置。这h们便知道应该从哪一斚w入手Q查扑և问题所在?

正式开?/span>

实际上每一个你定义的函数都是某个对象的Ҏ。甚xq样的写法:

function fn() {
alert(11);
}

老兄你不是故弄玄虚吧~。做一个这L演示可真得是单得要命。没错!本例不需要Q何Javascript文gQ服务器或html。你只要打开firefoxQ弹出firebug,点击console tab。在Firefox状态栏上面看到?gt;>>提示的地方就可以输入了?

输入Q?

function fn() { alert(11); };

然后回R。一切安?..你刚才做的实际上是定义了一个函数fn。接着试试Q?

fn();

然后回R。得?1的警告窗口?q不错吧Q接着试试Q?

window.fn();
this.fn();

得到一Ll果吧?q是因ؓ函数fn是window对象的一个方法,在第二行?this"的作用域实际指向了window对象。不q多数情况中你不需要像q样window.myFunction(...)地调用函敎ͼq样太麻烦了Q程序员工作h会很不方ѝ?

window对象

window 对象L存在的,你可理解其ؓ一个浏览器H口对象。它包含了其它所有的对象?strong>document 和所有的全局变量?

你可以打开FirebugQ切换到 Script 面q在Firebug右侧?strong>New watch expression... 里面输入 window。观察window对象I竟有什么在里面?

接着Q尝试找出我们之前定义过?strong>fn函数?

另外Q每个frame或iframe拥有其自w的window对象Q其自n的全局I间?/strong>

理解作用?/span>

接下的内容开始有点复杂了。切换到Firebug Console标签늄后输入:

var o1 = {testvar:22, fun:function() { alert('o1: ' + this.testvar); }};
var o2 = {testvar:33, fun:function() { alert('o2: ' + this.testvar); }};

l果是什么?你声明了o1 ?o2两个对象Q分别都有一些属性和ҎQ但g同?


接着试试Q?

fun();
window.fun();
this.fun();

出错了,是吧Q因为window对象Q等价于thisQƈ没有fun的方法。试一试下面的Q?

o1.fun();
o2.fun();

22?3出来了?非常好!

接下来这部分的内Ҏ复杂啦。基于这个原始的函数Q如果对象的数量多的话,你必Mؓ每个对象加上q个函数Q明显是重复力_了。这栯吧,o1.fun写得非常清晰的而且Z搞掂它已l占用了我一个星期的开发时间。想象一下代码到处散布着this变量Q怎么能不头疼Q如果要调用(执行Q的o1.funҎ?strong>this会执行o2,应该怎么实现呢?试一试下面的Q?

o1.fun.call(o2);

明白了吗Q当执行o1的funҎ时你变?strong>this指向到o2q个对象Q换句话_更加严}地说:o1.fun的方法在对象o2的作用域下运行?/strong>

当运行一个函敎ͼ一个对象的ҎӞ你可作用域当作this值的变量?

变量的可见度

变量的可见度和作用域的关p非常密切。我们已l了解到Q可在Q何对象的外部Q声明变量,或在全局的函敎ͼ函数也是变量的一U)也可以,更严DQ它们是全局对象window的属性?全局变量在Q何地斚w可见Q无论函数的内部q是外部。如果你在某一个函数内修改了一个全局变量Q其它函C会得知这个值是修改q的?/strong>

对象可以有它自己的属性(像上面的testvarQ?q些属性允总内部或是外部均是可见的。试Q?

alert(o1.testvar); // 从外部访问o1的属性testvar

从内部访问的演示可在两个试对象?strong>funҎ扑ֈ?

用关键字var在内部声明,相当于声明局部变量(局部声明也是在一条链上,即Scope Chain 作用域链上,Frank注)Q?

i = 44;
function fn2() {
var i = 55;
alert(i);
}
fn2();

得C么?对了Q?5。声明在函数fn2的变?strong>i是一个本地变量(局部变量)Q和{于44的全局变量i 44没什么关pR?But:

alert(i);

q会讉K全局变量iQ显C?4?

希望本文能帮助读者彻底理解作用域变量可见性的含义?

延阅读Q?

Retrieved from "


菜毛毛 2009-05-18 10:32 发表评论
]]>
L地进入Ext的世?-firefox debughttp://www.aygfsteel.com/caizh2009/articles/271249.html菜毛毛菜毛毛Mon, 18 May 2009 02:21:00 GMThttp://www.aygfsteel.com/caizh2009/articles/271249.htmlhttp://www.aygfsteel.com/caizh2009/comments/271249.htmlhttp://www.aygfsteel.com/caizh2009/articles/271249.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/271249.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/271249.htmlTutorial:Playing With Ext The Easy Way (Chinese)

From Learn About the Ext JavaScript Library

Jump to: navigation, search


Summary: Playing With Ext The Easy Way (Chinese)
Author: Patrick Donelan (译Q?a class="external text" title="http://www.5iya.com/blog" rel="nofollow">Cloudream)
Published: 2007-10-12
Ext Version: 2.0
Languages: en.png English de.png Deutsch cn.png Chinese kr.png Korean jp.png Japanese es.png Spanish tr.png Turkish

Contents

[hide]

y跚学步

W一?- 入门

惛_您已l听说过 Ext、浏览了在线演示Qƈ且尝试阅?a class="external text" title="http://extjs.com/deploy/dev/docs/" rel="nofollow">API文档。不q,面对复杂的API文档Q您却不知如何下手?Q?

W二?- h

通览q?a class="external text" title="http://extjs.com/deploy/dev/docs/" rel="nofollow">API文档Qƈ且找C所要立d试的功能Q面Ҏ؜杂的|页源代码,如何开始一个简单的试面Q那?#8230;…

不论您的目标是什么,您都可以依照本文快速的开始用Ext。不Q不用搭建服务器Q您所需要的仅仅?a title="Manual:Resources" >Firefox览器和Firebug调试插g。如果还没有安装Q那么现在就是一个好Z?


牛刀试

  • 打开Ext API文档Q您已经上\Q?
  • 单击 F12 打开 Firebug 控制台?
  • 如果您的 firebug 控制台处于单行模式(?'>>>' 开_Q那么请单击右下角的U色上箭头以开启多行编辑模式?
  • 输入以下代码Qƈ敲击 Ctrl-Enter 来运?
Ext.get(document.body).update('<div id="test"></div>');

上边q行代码的作用是当前DOM body元素用一个ID?strong>test的div元素替换。刚才那些API文档已经被删除,?Ext 代码依旧生效Qƈ且随时ؓ您效功?

现在Q我们假设您希望单的d一个面板元素(PanelQ,但对Ext.Panel的API冗繁的说明无能ؓ力。那么试着这些代码添加到 firebug 的控制台中:

Ext.get(document.body).update('<div id="test"></div>');
new Ext.Panel({
renderTo: 'test',
width: '200px',
title: 'My Title',
html: 'My HTML content'
});

再次敲击 Ctrl-Enter 。嗨Q您的面板元素已l诞生?

很好Q不q如果修改一些选项呢?用下边的代码替换刚才的那些代码:

Ext.get(document.body).update('<div id="test"></div>');
new Ext.Panel({
renderTo: 'test',
width: '200px',
title: 'My Title',
html: 'My HTML content',
collapsible: true
});

敲击 Ctrl-Enter 。怎么P一个可以׾~的面板配|好了。(注意面板右上角的图标)

每次敲击 Ctrl-Enter Q第一行代码都会移除现有的内容Q这h可以有一个干净的调试环境。这是一个简单的技巧,十分方便您尝试各U配|选项?

您可以ؓupdate()函数d所需要的 HTML 代码Q无论多。然后编写或多或的 Javascript 来探?Ext API?

q等什么?现在去亲自实践 Ext Api 吧?

Retrieved from "


菜毛毛 2009-05-18 10:21 发表评论
]]>EXT新手Q徏立自q工具?/title><link>http://www.aygfsteel.com/caizh2009/articles/271235.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Mon, 18 May 2009 01:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/271235.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/271235.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/271235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/271235.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/271235.html</trackback:ping><description><![CDATA[<p>我认为学习EXT开发最好的Ҏ是,在真正开发之前,掌握好高UJavaScript知识Q?像鱼儿游在水里一样对JSq用自如?</p> <p>自己可以创徏JavaScript的类、明白类原型Qclass's prototypeQ的原理Q?和明白函数的作用域都是有益的帮助?明白AjaxZ么要异步方式也是其中的一个知识点?</p> <p>论坛?0Q所提出的问题很大原因是对JavaScript知识不牢固所臻I而不是EXT API的问题?当真正开始用EXT做开发了Q那么安装目录下examples/*的文件夹过70个例子便是研I的好对象, q些例子Z展示了你日后会使用的大多数技巧或Ҏ?接着Q最好就是先拿examples/*的文件夹中例子练一l手Q做一些简单、轻型的项目?如果直接拿EXTl合到程序去开发,很可能你会因来越复杂的问题惔x陗?</p> <p>把每一的 知识?技?都做成可单独q行文gQ这样以便你以后参考,q有一个好处是Q可以发到论坛上Q然后我们放到examples/*的文件夹Q以便我们的试q协助你?如果能按照以上的dQ我怿q是一个很好的累积。而且按照我的角度看,整个UI是q样一点一Ҏv来?/p> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/271235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-18 09:44 <a href="http://www.aygfsteel.com/caizh2009/articles/271235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext 2q?/title><link>http://www.aygfsteel.com/caizh2009/articles/271232.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Mon, 18 May 2009 01:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/271232.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/271232.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/271232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/271232.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/271232.html</trackback:ping><description><![CDATA[<span id="wmqeeuq" class="mw-headline">有关重大改变的几个要?/span> <p>文章内容是对2.0新变化的l合q。请留意Ext框架在从1.x跨越?.0的过E中Q经历了无数的细微改q、臭虫修正和其他的改动?要逐一列出难ZQ所以本文着重提及架构上有{换的地方Q和一些全新加入的功能。本文下列的各部分将完整地解释这每一的l节?</p> <ul> <li><strong>lg模型 Component Model</strong><br /> ?.x中就有Component和BoxComponent两个cMQ但却没有深入整合到框架中去。到2.0Q这两个cd到极大的改进q是一切主要组件的基础?管q些cd于开发者而言一般是量隐藏l节Q不q理解好lg生存周期q方面的基础知识有利于进一步的Ext学习?a title="" >参阅详细</a>? <li><strong>容器模型 Container Model</strong><br /> 有几个核心类可用于生成器ӞwidgetsQ和包含其它lg的布局?<strong>容器Container</strong>为对象的容纳和组件的布局提供一个基性的构成方式Q对于整个Ext框架可视化必不可?<strong>面板Panel</strong> 从容器类l承Qؓ用户E序提供特定功能的UI基类Q属于容器结构层ơ中最常用的类?<strong>H口Window</strong>是面板的一U特D类型,使得web应用E序如桌面式Qdesktop-styleQ那栗?strong>视见区Viewport</strong>是专为全屏幕webE序应用而设计的实用容器 ?a title="" >参阅详细</a> <li><strong>布局Layouts</strong><br /> 1.x中的布局方式集中围绕在BorderLayout和其相关的几个类?.0中,布局的整体架构徏立在崭新的容器类、布局cM?BorderLayout现加入到九种风格布局之中。布局cdl是全部重写设计q考虑最大的可扩展性?布局的管理亦受益?.0的框ӞL一些开发者之前需要面对的复杂实现?a title="" >参阅详细</a> <li><strong>Grid</strong><br /> Gridlg往往都被认ؓ是Ext的核心组件之一Q在2.0的版本中同时l箋演进。新版的用户界面更友好,性能更佳Q功能上新加了行摘要、行归组、和一些基于插件实现如expandable rows和row numbering {等的更多功能?a title="" >参阅详细</a> <li><strong>模板 XTemplate</strong><br /> 1.x的模版类处理一些简单的模版时o人满意,但对于复杂的输出dq乏健壮的支持??.0中,全新的XTemplate可支持子模版Q数l处理,直接代码执行Q逻辑判断和更多有用的功能?a title="" >参阅详细</a> <li><strong>数据视图 DataView</strong><br /> 1.x的模版将数据l定到模版以生成制定的UI视图。JsonView是快速绑定JSON数据辅助cR?.0的DataView把以上两U方式作l一的处理,不同之处是它l承自BoxComponentQ可更好地支持各U布局方式Q新的XTemplatecMؓ模版处理提供强大的支持?a title="" >参阅详细</a> <li><strong>其它新组?/strong><br /> q些新组件包括动作(ActionQ、CycleButton?Hidden (field)?ProgressBar和TimeField?a title="" >参阅详细</a> </li> </ul> <a name=".E8.A1.A5.E5.85.85.E8.AF.B4.E6.98.8E"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 补充说明" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">补充说明</span></h4> <ul> <li><strong>主题</strong><br /> 2.0支持开即用的主题QThemeQ,使用更ؓ化。Ext 1.x支持四套主题Q但2.0减少C套("Ext Blue" 和GrayQ?如打自定义Ext的主题,那么Gray主题是一份不错的蓝本Q另外一?a title="Ext Extensions" >2.0 C֌主题</a>也可以提供一些思\或直接用?q不是API改动的一部分Q但是有需要在q里提及一下? <li><strong>H破性进?/strong><br /> 令h遗憾Q?.0的一些改动无法做到向后兼宏V因为无论相关的lgq是渲染模型已经是从底层上大q修改,许多现有的组件必舍弃旧1.x的方式重写编写,?.x的差别较大?我们提供?a title="Ext 1 to 2 Migration Guide" >1.x?.0升指南</a>希望能协助解决现有Ext 1.xE序的升U问题?</li> </ul> <a name=".E7.BB.84.E4.BB.B6.E6.A8.A1.E5.9E.8B_Component_Model"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: lg模型 Component Model" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">lg模型 Component Model</span></h3> <a name=".E7.BB.84.E4.BB.B6.E6.A6.82.E8.BF.B0"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: lg概述" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">lg概述</span></h4> <p>2.0的一个目标就是希望能以简单的代码块构建程序,甚至比以往更简单?<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component" rel="nofollow">lgComponent</a>cL初在1.x引入Q却没有全面整合到框架中厅R在2.0中,lg所赋予的能力有长的改q和提升Q得其成ؓ整个架构里最为基的一个类。组件对象ؓlg的创建、渲染、事件处理、状态管理和销毁提供了l一的模型,Ext下面的每一个组件具备了q些q件对象扩展出来的Ҏ。这?.0lg对象的关键特性: </p> <ul> <li><strong>昑ּ声明构徏器链和重?Explicit constructor chaining and overriding</strong><br /> lg会将一个基构造器q同配置传入到子cM。函?tt>initComponent</tt>用于提供制定的构造器逻辑Q只要在l承链上的某一个子cdC可,所有的lg都遵从此方式。此时的子类可?tt>initComponent</tt>中对其设|相关的属性,实现具体的功能? <li><strong>可调控的渲染 Managed rendering</strong><br /> 2.0中,每个lg都支持g时渲染(lazy renderingQ,又称按需渲染Qon-demand renderingQ。渲染的调控一般是Z自动讄完好的。即使如此,你亦可以通过?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=beforerender" rel="nofollow">beforerender</a>?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=render" rel="nofollow">render</a>事g控制渲染发生、结束,辑ֈ最为灵zȝ自定义调控? <li><strong>可调控的销?Managed destruction</strong><br /> 每一个组件具?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=destroy" rel="nofollow">destroy</a>的函敎ͼ当组件不再需要时QExtp责组件的l束调控Q如自动垃圾回收和摧毁组件元素。当Ӟ销毁亦提供相应的事Ӟ?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=beforedestroy" rel="nofollow">beforedestroy</a>?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=destroy" rel="nofollow">destroy</a>可按照实际的情况作出逻辑处理? <li><strong>状态管理自动化 Automatic state management</strong><br /> lg内徏讄和获取状态(StateQ的功能Q只要让全局对象<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.state.Manager" rel="nofollow">StateManager</a>和一个状?Provider都初始化好,那么多数的组仉h自动状态管理的能力? <li><strong>lg常规行ؓ的统一接口 Consistent interface for basic component behavior</strong> <br /> 一般常规的行ؓ如隐藏、显C和ȀzR禁用均是组件的基本Ҏ。如需要,q些都可由子cd重写或制定? <li><strong>q件管理器负责的可用调?Availability via ComponentMgr</strong><br /> Ext的每一个组件在创徏的时候就会由lg理器登记注册,即你可随时获取Q何组Ӟ只需调用<tt>Ext.getCmp('id')</tt>? <li><strong>支持插g Plugin support</strong><br /> 现在M的组件可以通过插g的Ş式来扩展了。插件实质是带有<tt>init</tt>Ҏ的一U类。该Ҏ会有一个单独的参数Q类型ؓExt.ComponentQ传入到其中。插件可通过lg?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=plugins" rel="nofollow">plugins</a>配置Ҏ定。当lg创徏Ӟ如果有插件可用,lg׃调用每个插g上的<tt>init</tt>ҎQ将自n的引用作为参C入?每个插gq行之后可调用组件的Ҏ或响应组件的事g以实现自w的功能?</li> </ul> <a name=".E7.BB.84.E4.BB.B6.E7.9A.84.E7.94.9F.E5.AD.98.E5.91.A8.E6.9C.9FComponent_Life_Cycle"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: lg的生存周期Component Life Cycle" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">lg的生存周期Component Life Cycle</span></h4> <p>一般来_lg的对象架构满了“能运行(Just WorksQ?#8221;q一基本要求。架构在设计上已是调控好了大多数lg是怎样处理的,而且Ҏl开发者是透明的?不过Q若对组件对象扩展,或是有些需要制定的地方Q就要利用一定的旉d现?深入理解lg对象的生存周期会是非常好的帮助。下面的内容是对基于组件的每个c,一个周期内各个重要阶段作出解释Q?/p> <a name=".E5.88.9D.E5.A7.8B.E5.8C.96Initialization"></a> <h5 style="margin-left: 15px"><span id="wmqeeuq" class="editsection"><a title="Edit section: 初始化Initialization" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">初始化Initialization</span></h5> <ol> <li><strong>配置对象生效了 <br /> The config object is applied.<br /> </strong>lg对象的构造器会把全部的配|项传入到其子类中去Qƈ且进行下列所有的步骤? <li><strong>lg的底层事件创Z<br /> The base Component events are created</strong><br /> q些事gq件对象负责触发。事件有enable, disable, beforeshow, show, beforehide, hide, beforerender, render, beforedestroy, destroy Q参?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component" rel="nofollow">Component API文档</a>完整的内容)? <li><strong>lg在组件管理器里登C<br /> The component is registered in ComponentMgr</strong><br /> initComponentq方法L使用在子cMQ就其本w而论Q该Ҏ是一个模板方法(template methodQ,用于每个子类ȝ实Q何所需的构造器逻辑Qany needed constructor logicQ。首先会创徏c,然后lg对象各层ơ里面的每个c都应该调用<tt>superclass.initComponent</tt>。通过该方法,可方便地实玎ͼimplementQ,或重写(OverrideQQ意一层构造器的逻辑? <li><strong>状态感知进行初始化Q如果有的话Q?br /> State is initialized (if applicable)</strong><br /> 如果lg是状态感知的Q其状态会q行h? <li><strong>加蝲好插Ӟ如果有的话)<br /> Plugins are loaded (if applicable)</strong><br /> 如果该组件有指定M插gQ这时便会初始化? <li><strong>渲染好插Ӟ如果必须的话Q?br /> The component is rendered (if applicable)</strong><br /> 如果指定了组件的<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=renderTo" rel="nofollow">renderTo</a> ?<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=applyTo" rel="nofollow">applyTo</a>配置属性,那么渲染工作׃立即开始,否则意味着延时渲染Q即{待到显式控制显C,或是其容器告知其昄的命令?</li> </ol> <a name=".E6.B8.B2.E6.9F.93.E8.BF.87.E7.A8.8B_Rendering"></a> <h5 style="margin-left: 15px"><span id="wmqeeuq" class="editsection"><a title="Edit section: 渲染q程 Rendering" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">渲染q程 Rendering</span></h5> <ol> <li><strong>触发beforerender事g The beforerender event is fired</strong><br /> q是个可取消的事Ӟ指定的句柄(handlerQ可Llgq行渲染 <li><strong>讄好容?The container is set</strong><br /> 如果没有指定一个容器,那么用位于DOM元素中组件的父节点作为容器? <li><strong>调用onRenderҎ The onRender method is called</strong><br /> q是子类渲染最重要的一个步骤,׃该方法是一个模板方法(template methodQ,用于每个子类ȝ实Q何所需的渲染逻辑Qany needed render logicQ。首先会创徏c,然后lg对象各层ơ里面的每个c都应调?tt>superclass.onRender</tt>。通过该方法,可方便地实玎ͼimplementQ,或重写(OverrideQQ意一层渲染的逻辑? <li><strong>lg?#8220;隐藏”状态的 The Component is "unhidden"</strong><br /> 默认下,许多lg是由CSS样式cd"x-hidden"讄隐藏的。如?<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=autoShow" rel="nofollow">autoShow</a>所配置的gؓtrueQ这时就不会有这?hide"样式cM用在该组件上 <li><strong>自定义的cR样式生效了 Custom class and/or style applied</strong><br /> 一切组件的子类都支?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=cls" rel="nofollow">cls</a>?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=style" rel="nofollow">style</a> 两种Ҏ的配|属性,分别用于指定用户自定义的CSS样式cdCSS规则?推荐指定<tt>cls</tt>的方法来制定lg及其各部分的可视化设|。由于该样式cM套用在组件markup最外的一层元素,所以标准CSS规则会承到lg下Q何子元素的n上? <li><strong>触发render事g The render event is fired</strong><br /> q是lg通知成功渲染的一个步骤。这Ӟ你可肯定地认为组件的DOM元素是可用的了。如果尝试在渲染之前讉KlgQ会抛出一个不可用的异常? <li><strong>调用了afterRenderҎ The afterRender method is called</strong><br /> q是另外一个实现或重写特定所需?#8220;后渲?#8221;逻辑的模板方法。每个子cd调用<tt>superclass.afterRender</tt>. <li><strong>lg被隐藏或用Q如果有的话Q?The Component is hidden and/or disabled (if applicable)</strong><br /> 配置hidden和disabled到这步生? <li><strong>所有状态感知的事g初始化(如果有的话) Any state-specific events are initialized (if applicable)</strong><br /> 状态感知的lg可由事g声明Ҏ加蝲和保存状态。如支持Q加入此cȝ事g?</li> </ol> <a name=".E9.94.80.E6.AF.81.E8.BF.87.E7.A8.8B_Destruction"></a> <h5 style="margin-left: 15px"><span id="wmqeeuq" class="editsection"><a title="Edit section: 销毁过E?Destruction" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">销毁过E?Destruction</span></h5> <ol> <li><strong>触发beforedesroy事g The beforedestroy event is fired</strong><br /> q是个可取消的事Ӟ指定的句柄(handlerQ可Llg被销毁? <li><strong>调用了beforeDestroyҎ The beforeDestroy method is called</strong><br /> q是另外一个实现或重写预定销毁逻辑的模板方法。每个子cd调用<tt>superclass.beforeDestroy</tt>? <li><strong>元素及其侦听器被U除 Element and its listeners are removed</strong><br /> 若组件是渲染好的Q所属的元素的事件侦听器和DOM树中的元素都会被U除? <li><strong>调用了onDestroyҎ The onDestroy method is called</strong><br /> q是另外一个实现或重写特定所需?#8220;后销?#8221;逻辑的模板方法。每个子cd调用<tt>superclass.onDestroy</tt>?strong>注意</strong> 容器c(Container classQ和一切容器的子类Q提供了一个默认的<tt>onDestroy</tt>实现Q自动遍历其<tt>items</tt>集合里的每一,分别地执行子lgw上?tt>destroy</tt>Ҏ? <li><strong>在组件管理器中撤销lg对象的登?Component is unregistered from ComponentMgr</strong><br /> 使得不能再从Ext.getCmp获取lg对象 <li><strong>触发destroy事g The destroy event is fired</strong><br /> q是lg成功销毁的一个简单通知。此时组件已lDOM中已是不存在的了 <li><strong>lg上的事g侦听器被U除 Event listeners on the Component are removed</strong><br /> lg本n可允总所属的元素得到事g侦听器。如有的话,q同删除?</li> </ol> <a name=".E7.BB.84.E4.BB.B6.E7.9A.84X.E7.B1.BB.E5.9E.8B_XTypes"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: lg的Xcd XTypes" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">lg的Xcd XTypes</span></h4> <p><strong>XTypes</strong>是Ext 2.0中新的概念,被认为是Extlg的特定类型。可用的xtype摘要可在 <a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component" rel="nofollow">ComponentcAPI</a>开始的地方扑ֈ。与一般JavaScript对象用法怼QXTypes可用于查找或比较lg对象Q如<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=isXType" rel="nofollow">isXType</a>?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=getXType" rel="nofollow">getXType</a>{的Ҏ。其?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&member=getXTypes" rel="nofollow">getXTypes</a>的方法可列出Llg的xtpye层次表?/p> <p>然而,Xtypes最大的用途是怎么用于优化lg的创建和渲染q程?通过指定一个xtype的配|对象的写法Q可隐式声明的方式创建组Ӟ使得当不需要立x染的情况只是一个对象,省去不必要的实例化步骤。这时不仅渲染的动作是g时的Q而且创徏实际对象的这一步也是g时的Q从而节省了内存和资源?在复杂的布局中,q种性能上的改进ؓ明显?</p> <pre class="source source-javascript"><span id="wmqeeuq" class="co1">//昑ּ创徏所容纳的组?/span> <span id="wmqeeuq" class="kw2">var</span> panel = <span id="wmqeeuq" class="kw2">new</span> Ext.<span id="wmqeeuq" class="me1">Panel</span><span id="wmqeeuq" class="br0">(</span><span id="wmqeeuq" class="br0">{</span> ... <span id="wmqeeuq" class="me1">items</span>: <span id="wmqeeuq" class="br0">[</span> <span id="wmqeeuq" class="kw2">new</span> Ext.<span id="wmqeeuq" class="me1">Button</span><span id="wmqeeuq" class="br0">(</span><span id="wmqeeuq" class="br0">{</span> text: <span id="wmqeeuq" class="st0">'OK'</span> <span id="wmqeeuq" class="br0">}</span><span id="wmqeeuq" class="br0">)</span> <span id="wmqeeuq" class="br0">]</span> <span id="wmqeeuq" class="br0">}</span>;   <span id="wmqeeuq" class="co1">//使用xtype创徏</span> <span id="wmqeeuq" class="kw2">var</span> panel = <span id="wmqeeuq" class="kw2">new</span> Ext.<span id="wmqeeuq" class="me1">Panel</span><span id="wmqeeuq" class="br0">(</span><span id="wmqeeuq" class="br0">{</span> ... <span id="wmqeeuq" class="me1">items</span>: <span id="wmqeeuq" class="br0">[</span><span id="wmqeeuq" class="br0">{</span> xtype: <span id="wmqeeuq" class="st0">'button'</span>, text: <span id="wmqeeuq" class="st0">'OK'</span> <span id="wmqeeuq" class="br0">}</span><span id="wmqeeuq" class="br0">]</span> <span id="wmqeeuq" class="br0">}</span>;</pre> <p>W一个例子中Q面板初始化的同Ӟ按钮L会立卌创徏的。如果加入较多的lgQ这U方法很可能减慢的渲染速度。第二例子中Q按钮直到面板真正在览器上需要显C才会被创徏和渲染?</p> <p>如果面板从未昄Q例如有个tab一直是隐藏的)Q那么按钮就不会被创建,不会消耗Q何资源了?</p> <a name="BoxComponent"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: BoxComponent" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">BoxComponent</span></h4> <p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.BoxComponent" rel="nofollow">BoxComponent</a> 是另外一个重要的基类Q该cMlgComponent扩展QؓM要进行可视渲染和参与布局的组件提供了一致的、跨览器的子模型QBox ModelQ实现。BoxComponent负责调节大小和定位,自动处理各浏览器之间的差异,如外/内补丁、边框的问题QŞ成一个统一的箱子模型,以支持各U浏览器?.0的一切容器类QcontainerQ承自BoxComponent?/p> <a name=".E5.AE.B9.E5.99.A8.E6.A8.A1.E5.9E.8BContainer_Model"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: 容器模型Container Model" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">容器模型Container Model</span></h3> <div id="wmqeeuq" class="thumb tright"> <div id="wmqeeuq" class="thumbinner" style="width: 309px"><a class="internal" title="Ext 2.0 Component/Container Class Hierarchy" ><img class="thumbimage" height="273" alt="Ext 2.0 Component/Container Class Hierarchy" src="http://extjs.com/learn/w/images/5/50/Ext2-Container-hierarchy.gif" width="307" longdesc="/learn/Image:Ext2-Container-hierarchy.gif" /></a> <div id="wmqeeuq" class="thumbcaption">Ext 2.0 Component/Container Class Hierarchy</div> </div> </div> <a name=".E5.AE.B9.E5.99.A8_Container"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 容器 Container" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">容器 Container</span></h4> <p>一个组件如果有<em>包含其它的组?/em>Q那么,<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Container" rel="nofollow">容器Container</a>便是q个lg奠基之石。该cL供了布局斚w和调节大、嵌套组所需的逻辑Qƈ且提供一个基性的加入lg协调机制。容器类不应该直接用,其目的在于ؓ一切可视的容器lg提供一个基cR?/p> <a name=".E9.9D.A2.E6.9D.BF_Panel"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 面板 Panel" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">面板 Panel</span></h4> <p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Panel" rel="nofollow">面板Panel</a>?.0最常用的容器,90Q布局d都离不开面板。布局里的排版元素便是面板Q面板如同一张白U,完全是空白的矩ŞQ没有可视内宏V虽然这P面板也提供了一些预留区域, 方便加入E序所需的UI界面Q包括顶部或底部的工h、菜单栏、头部区域、底部区域和w干区域。同时内建可展开和可收羃行ؓ的按钮,和其它不同Q务预讄按钮。面板可LC降到L的容器或布局Q当中定位或渲染的逻辑全部由Ext调控Q?</p> <p>下列是Ext 2.0面板最主要的几个子c:</p> <ul> <li><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.grid.GridPanel" rel="nofollow">GridPanel</a> <li><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.TabPanel" rel="nofollow">TabPanel</a> <li><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.tree.TreePanel" rel="nofollow">TreePanel</a> <li><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel" rel="nofollow">FormPanel</a> </li> </ul> <a name="Window"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: Window" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">Window</span></h4> <p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Window" rel="nofollow">Window</a> 是一U可动的、可最?最大化的、可复原的、可拖动?.{此cȝҎ面板。其目的在于实现一U具有桌面风格的E序界面的基c,?a class="external text" title="http://extjs.com/deploy/dev/examples/desktop/desktop.html" rel="nofollow">Ext桌面演示</a>看到的那栗?/p> <a name=".E8.A7.86.E8.A7.81.E5.8C.BAViewport"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 视见区Viewport" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">视见区Viewport</span></h4> <p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Viewport" rel="nofollow">视见区Viewport</a>是以document.body作容器的实用c,它会与浏览器视图自适应寸Q是全屏q应用的基础Q如览器大调节、布局重新计算的问题由该类自动完成?<strong>注意视见区Viewport除了document.body元素外不能渲染在其它的容器上Q所以一个页面只能有一个视见区?/strong></p> <a name=".E5.B8.83.E5.B1.80_Layouts"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: 布局 Layouts" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">布局 Layouts</span></h3> <div id="wmqeeuq" class="thumb tright"> <div id="wmqeeuq" class="thumbinner" style="width: 332px"><a class="internal" title="Ext 2.0 Layout Class Hierarchy" ><img class="thumbimage" height="445" alt="Ext 2.0 Layout Class Hierarchy" src="http://extjs.com/learn/w/images/7/73/Ext2-Layout-hierarchy.gif" width="330" longdesc="/learn/Image:Ext2-Layout-hierarchy.gif" /></a> <div id="wmqeeuq" class="thumbcaption">Ext 2.0 Layout Class Hierarchy</div> </div> </div> <a name=".E5.BC.95.E8.A8.80"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 引言" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">引言</span></h4> <p>2.0中最h义的改进之一。在创徏优雅的程序布局时感受到易用性或灉|性方面带来的好处。在Ext 1.xQ布局的开发集中围l在BorderLayout、Region和ContentPanel几个cR?1.x BorderLayout已经可以方便地生成UIQ但要真正创建属于自q布局Q还是没有够的支持?创徏复杂的布局通常需要手工编写一些代码应付滚动条、嵌套和某些怪癖的问题?</p> <p>Ext 2.0带来了一个重写编写的、企业应用的布局理pȝ?共有10U风格的布局理器,分别提供构徏各种可能的程序布局基础。Ext调控了布局诸如size、定位、滚动条和其他的属性方面的问题Q一如既往地简单,开即用。在容器也可无限嵌套布局、؜合其他不同风格的布局?</p> <p>布局由容器内|创建,所以布局不应通过关键?strong>new</strong>实例化这U方式直接用?有一U内部的机制Q容器与布局能够很好地协调工作—只需配置好相关的参数Q容器就会委托其负责的布局cd作。创建容器的时候,你应选定一U布局的风g及相关的配置Q这两个配置是属性layout和属性layoutConfig?举例Q?/p> <pre class="source source-javascript"><span id="wmqeeuq" class="kw2">var</span> panel = <span id="wmqeeuq" class="kw2">new</span> Panel<span id="wmqeeuq" class="br0">(</span><span id="wmqeeuq" class="br0">{</span> title: <span id="wmqeeuq" class="st0">'My Accordion'</span>, layout: <span id="wmqeeuq" class="st0">'accordion'</span>, <span id="wmqeeuq" class="co1">//在这个面板中所使用的布局样式</span> layoutConfig: <span id="wmqeeuq" class="br0">{</span> animate: <span id="wmqeeuq" class="kw2">true</span> <span id="wmqeeuq" class="co1">//布局指定的配|项写在q里</span> <span id="wmqeeuq" class="br0">}</span> <span id="wmqeeuq" class="co1">// 其他Panel的选项</span> <span id="wmqeeuq" class="br0">}</span><span id="wmqeeuq" class="br0">)</span>;</pre> <p>当你创徏嵌套布局Ӟ明白面板包含其他面板是很重要的,<em>布局中的每个面板必须指定一个布局理?/em>?多数情况你不需要指定布局的风格如“border”?#8220;accordion”Q较常见的是“fit”那一U,会自动调整大自适应它的容器?如果你不指定某个布局理器,默认的是ContainerLayoutc,不过q样很可能导致一些意料不到的情况发生Q所以最好精声明一下?</p> <p><br /> </p> <p>每种布局c都支持其特定的配置选项。关于布局每种配置选项可参考API文档?</p> <a name=".E5.B8.83.E5.B1.80.E7.AE.A1.E7.90.86.E5.99.A8_Layout_Managers"></a> <h4 style="margin-bottom: 10px"><span id="wmqeeuq" class="editsection"><a title="Edit section: 布局理?Layout Managers" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">布局理?Layout Managers</span></h4> <table cellspacing="0" cellpadding="5"> <tbody> <tr> <td style="background: #eee"><a class="image" title="Image:Layout-container.gif" ><img height="63" alt="Image:Layout-container.gif" src="http://extjs.com/learn/w/images/a/a9/Layout-container.gif" width="80" longdesc="/learn/Image:Layout-container.gif" /></a></td> <td style="background: #eee" width="50%"><a name="ContainerLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: ContainerLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">ContainerLayout</span></h5> <p>其它一切布局理器的基类Q容器若不指定某个布局理器,则默认的理器就是这个ContainerLayout。ContainerLayout没有M的外观表C?其主要的职责是容U_目、控制渲染和一些常见Q务,如调节大缓Ԍresize bufferingQ?ContainerLayout常用于扩展制定的布局Q很实例化直接使用。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.ContainerLayout" rel="nofollow">API 参?/a>.</p> </td> <td><a class="image" title="Image:Layout-card.gif" ><img height="63" alt="Image:Layout-card.gif" src="http://extjs.com/learn/w/images/2/23/Layout-card.gif" width="80" longdesc="/learn/Image:Layout-card.gif" /></a></td> <td width="50%"><a name="CardLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: CardLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">CardLayout</span></h5> <p>CardLayout容器中的每个组件当作一个卡片来处理。在某一旉Q只有一个卡片是可见的,容器象一个卡片堆栈一样工作。大多数的情况,用于向导QWizardsQ,制定的tab实现或其它多面信息的场合。参?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.CardLayout" rel="nofollow">API 参?/a>?/p> </td> </tr> <tr> <td><a class="image" title="Image:Layout-absolute.gif" ><img height="63" alt="Image:Layout-absolute.gif" src="http://extjs.com/learn/w/images/1/16/Layout-absolute.gif" width="80" longdesc="/learn/Image:Layout-absolute.gif" /></a></td> <td><a name="AbsoluteLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: AbsoluteLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">AbsoluteLayout</span></h5> <p>q是一个非常简单的布局Q通过X/Y坐标_来定位包含各的相关容器。参?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.AbsoluteLayout" rel="nofollow">API 参?/a>.</p> </td> <td><a class="image" title="Image:Layout-column.gif" ><img height="63" alt="Image:Layout-column.gif" src="http://extjs.com/learn/w/images/d/d6/Layout-column.gif" width="80" longdesc="/learn/Image:Layout-column.gif" /></a></td> <td><a name="ColumnLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: ColumnLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">ColumnLayout</span></h5> <p>适用于多个列q排l构的布局风格Q每个列的宽度须由像素值或癑ֈ比指定,但高度自适应于内容的高度。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.ColumnLayout" rel="nofollow">API参?/a>. </p> </td> </tr> <tr> <td><a class="image" title="Image:Layout-accordion.gif" ><img height="63" alt="Image:Layout-accordion.gif" src="http://extjs.com/learn/w/images/b/b1/Layout-accordion.gif" width="80" longdesc="/learn/Image:Layout-accordion.gif" /></a></td> <td><a name="AccordionLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: AccordionLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">AccordionLayout</span></h5> <p>AccordionLayout包含了一l像卡片垂直方向堆栈的面板,同通过展开或收~来昄内容。在某一旉Q只有一个卡片是可见的。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.Accordion" rel="nofollow">API参?/a>?/p> </td> <td><a class="image" title="Image:Layout-fit.gif" ><img height="63" alt="Image:Layout-fit.gif" src="http://extjs.com/learn/w/images/2/2e/Layout-fit.gif" width="80" longdesc="/learn/Image:Layout-fit.gif" /></a></td> <td><a name="FitLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: FitLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">FitLayout</span></h5> <p>q是一个简单的布局Q主要是创徏一个适应容器大小的布局区域。如没有特定的布局要求q是容器最好的默认布局。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.FitLayout" rel="nofollow">API参?/a>.</p> </td> </tr> <tr> <td><a class="image" title="Image:Layout-anchor.gif" ><img height="63" alt="Image:Layout-anchor.gif" src="http://extjs.com/learn/w/images/6/66/Layout-anchor.gif" width="80" longdesc="/learn/Image:Layout-anchor.gif" /></a></td> <td><a name="AnchorLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: AnchorLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">AnchorLayout</span></h5> <p>q是Z些固定元素相对于容器四条边的布局。元素可通过与边~的癑ֈ比或便宜一个值来定位Qƈ支持相当于物理容器有不同寸?#8220;虚拟层画布(virtual layout canvasQ?#8221;?详细?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.AnchorLayout" rel="nofollow">API文档</a>?/p> </td> <td><a class="image" title="Image:Layout-form.gif" ><img height="63" alt="Image:Layout-form.gif" src="http://extjs.com/learn/w/images/7/73/Layout-form.gif" width="80" longdesc="/learn/Image:Layout-form.gif" /></a></td> <td><a name="FormLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: FormLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">FormLayout</span></h5> <p>FormLayout是ؓ创徏一张要提交数据条目的表单而设计的布局风格。注意,一般来Ԍ?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel" rel="nofollow">FormPanel</a>怼Q此布局c都有表单提交的自动处理Q但你会更們֐使用前者?FormPanels<strong>必须</strong>指定layout:'form'Q只能一定是q样Q?所以表单额外需要一个布局其嵌套?参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.FormLayout" rel="nofollow">API文档</a>?/p> </td> </tr> <tr> <td><a class="image" title="Image:Layout-border.gif" ><img height="63" alt="Image:Layout-border.gif" src="http://extjs.com/learn/w/images/5/55/Layout-border.gif" width="80" longdesc="/learn/Image:Layout-border.gif" /></a></td> <td><a name="BorderLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: BorderLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">BorderLayout</span></h5> <p>?.x的BorderLayout的布局完全一致。布局区域支持嵌套Q?滑动条面板和可关闭、微调的分隔区域。对于一些典型业务程序的UIؓ适用。详l?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.BorderLayout" rel="nofollow">API文档</a>?/p> </td> <td><a class="image" title="Image:Layout-table.gif" ><img height="63" alt="Image:Layout-table.gif" src="http://extjs.com/learn/w/images/9/9a/Layout-table.gif" width="80" longdesc="/learn/Image:Layout-table.gif" /></a></td> <td><a name="TableLayout"></a> <h5><span id="wmqeeuq" class="editsection"><a title="Edit section: TableLayout" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">TableLayout</span></h5> <p>主要目的是通过一个表格的形式划分区域。实际上也是生成一个table的HTML makeup 详细?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.TableLayout" rel="nofollow">API参?/a>?/p> </td> </tr> </tbody> </table> <a name="Grid"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: Grid" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">Grid</span></h3> <a name=".E6.A6.82.E8.BF.B0"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 概述" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">概述</span></h4> <p>2.0中的GridView有极大的改进Q而Grid的UI部分Q正是由GridViewq个cL实现的?.0中GridView最主要的新功能有:</p> <ul> <li><strong>效能的提?/strong><br /> GridView的底层结构和渲染代码已在2.0完整重构q,q侧重考虑了效能部分。正因性能的原因,锁定列的q一功能已经取消Q参阅下一节)? <li><strong>感观Qlook and feelQ的改进</strong><br /> 和新2.0的主题一P Grid的外观控制也有新变化Q得Grid比以前更时尚和看上去更具吸引力? <li><strong>单行归组</strong><br /> 多个行可被归l到某一指定列,q户重新归l亦可? <li><strong>多行l摘?/strong><br /> 每一l可相应的提供一个数据摘要组 <li><strong>q阶插g支持</strong><br /> ?.0中,新加入插件机制。GridView是q种插g机制的一个典型例子。如范例中所C,Grid优秀的功能便是依靠几个预先做好的插g。插件RowExpander提供了展开、收~行的功能,插gRowNumberer提供了行中数字的支持?</li> </ul> <a name=".E5.88.97.E9.94.81.E5.AE.9A.E7.9A.84.E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A1.B9.EF.BC.88Column_Locking.EF.BC.89"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 列锁定的注意事项QColumn LockingQ? ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">列锁定的注意事项QColumn LockingQ?/span></h4> <p>有些用户或许发现Ext 1.x中列锁定的功能,?.0因ؓ已经取消Qƈ可以说以后也不再支持了。列锁定QColumn lockingQ,虽然Ҏ些用h说有其的用途, 但与2.0 GridView的新功能有不兼容的地方(如归l、摘要等Q,而且Z实现锁定会得Grid渲染性能开销增大?因此Q?.x gridViewq功能的向上升Q或打补丁,均不会由官方支持?</p> <p><strong>注意Q?/strong>当前有ؓ2.0而做的用h展在q行中,以实?.0的列锁定Q而且看上d得还蛮不错。更多有用资讯可<a class="external text" title="http://extjs.com/forum/showthread.php?t=17942" rel="nofollow">论坛的帖?/a>扑ֈ?/p> <a name="XTemplate"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: XTemplate" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">XTemplate</span></h3> <p>XTemplate使用了多U标{֒Ҏ操作W支持模板,使得模板在应付复杂的数据l构时尤为健壮。这里所列出的高度概括的几项功能Q欲了解完整的细节和使用ҎQ请参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.+XTemplate" rel="nofollow">XTemplate API文档</a>.</p> <ul> <li>自动数组填充和作用域切换 <li>可在子模板作用域内访问父U对? <li>可访问数l烦? <li>支持数据值的单匹? <li>自动渲染点型数l(不包含非对象的| <li>基础性的条g逻辑W号<strong>if</strong> <li>可执行模板中直接写好的Q意语? <li>支持模板的配|属? <li>可通过配置对象自定义模板Ҏ <li>可用于服务端的JavaScript模板 </li> </ul> <a name="DataView"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: DataView" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">DataView</span></h3> <p>从表面上看,<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.DataView" rel="nofollow">DataView</a>?.x的Viewc非常相伹{两者都支持模版数据渲染QData store数据l定和内建的选区模型和事件。但是, 随着2.0新架构的设计QDataView赋予了更强大的功能?下面是这ơ最重要的改动:</p> <ul> <li><strong>l承自BoxComponent</strong><br /> 1.x Viewcȝ承自Observable, 作ؓ独立lg而言工作不错Q?但是它ƈ没提供内建的机制与其他组件融合的能力。而DataView是针对q种不作出的改q,该类从BoxComponentl承Q因?a title="" >如前文所q?/a>Q也具备一般组件的生存周期控制? <li><strong>发挥了XTemplate之功?/strong><br /> 1.x Viewc采用了1.x本n的模版类Template 。较好满了view自n的需求,但是难以满一些复杂的渲染d。DataView采用的模版类也升U到2.0?a title="" >XTemplate</a>Q可L定制UI应付复杂的数据? <li><strong>新增的配|选项</strong><br /> DataView 提供了更为灵zȝQ几个新选项Q? <ul> <li><strong>itemSelector:</strong> 必须是一个DomQuery选择W告知该cȝ竟如何分辨出每个item。相?.x的做法带来更高的灉|性和更高的速度? <li><strong>simpleSelect:</strong> 一U新的选区生成模式Q得用hL下Shift或Ctrl键便可进行多选? <li><strong>overClass:</strong> 一个CSS的样式类Q每个元素onmouseover和onmouseout时生效? <li><strong>loadingText:</strong>像其他绑定store的Extlg一PDataView支持标准的遮|效果?</li> </ul> </li> </ul> <a name=".E5.85.B6.E5.AE.83.E6.96.B0.E7.BB.84.E4.BB.B6"></a> <h3><span id="wmqeeuq" class="editsection"><a title="Edit section: 其它新组? ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">其它新组?/span></h3> <p>一些有的新组件也加入?.0中去了。要了解q些新组件到底有什么新功能Q最好还是看看API文档完整的介l?/p> <a name=".E5.8A.A8.E4.BD.9C_Action"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: 动作 Action" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">动作 Action</span></h4> <p>动作Action是一U从lg中抽象出来的可复用的“功能?#8221;Q即多个lg之间的同一功能都来自这个ACTION的实现。动作允怽׃n句柄QhandlersQ,配置选项和UI的更斎ͼ所有组件均支持动作的接口(主要是ToolbarQButton?MenulgQ?详细?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Action" rel="nofollow">API文档</a>?/p> <a name="CycleButton"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: CycleButton" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">CycleButton</span></h4> <p>q是一个包含复选元素菜单的特制的SplitButton。当菜单子项每次被单击,按钮都会轮回一ơ状态,触发change的事Ӟ或调用按钮的changeHandler函数Q如果有的话Q以Ȁz菜单项?FeedViewer演示E序包含了该例子?预览H口地址的那个按钮就是一个SplitButton。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.CycleButton" rel="nofollow">API文档</a>?/p> <a name="Hidden_.28field.29"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: Hidden (field)" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">Hidden (field)</span></h4> <p>q个便是HTML表单中隐藏域的一个简单的实现Q能够以EXT FORMlg般操控。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.Hidden" rel="nofollow">API参?/a>?/p> <a name=".E8.BF.9B.E5.BA.A6.E6.9D.A1_ProgressBar"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: q度?ProgressBar" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">q度?ProgressBar</span></h4> <p>1.x中的q度条是单地内徏在MessageBoxcM。现在已重构为单独的器gq有q一步的改进。它支持两种不同的模式(手动和自动进度)Q而且LOOK and FEEL斚w可轻村ֈ定。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.ProgressBar" rel="nofollow">API参?/a>?/p> <a name="TimeField"></a> <h4><span id="wmqeeuq" class="editsection"><a title="Edit section: TimeField" ><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png" alt="" /></a></span> <span id="wmqeeuq" class="mw-headline">TimeField</span></h4> <p>q是下拉列表旉选取器的单实现。详l在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.TimeField" rel="nofollow">API参?/a>?/p> <!-- Pre-expand include size: 653 bytes Post-expand include size: 1039 bytes Template argument size: 621 bytes Maximum: 2097152 bytes --> <div id="wmqeeuq" class="printfooter">Retrieved from "<a </div> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/271232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-18 09:42 <a href="http://www.aygfsteel.com/caizh2009/articles/271232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Firefox使用Firebug中debughttp://www.aygfsteel.com/caizh2009/articles/271227.html菜毛毛菜毛毛Mon, 18 May 2009 01:30:00 GMThttp://www.aygfsteel.com/caizh2009/articles/271227.htmlhttp://www.aygfsteel.com/caizh2009/comments/271227.htmlhttp://www.aygfsteel.com/caizh2009/articles/271227.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/271227.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/271227.htmlFirefox使用Firebug中debug视图下的step into, step over{按钮需要先讄javascript脚本的断?
debug视图中包括step into和step over{按钮,q些按钮在通常的情况下是无效的Q如果需要单步调试javascript代码Q可以在相应的javascript代码处设|断点,然后h面?/p>

[Firebug介]
当前版本Q?.05
Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.
在您览旉成在Firefox中的Firebug能让您对于大量开发工具了如指掌。您可以实时在Q何浏览的面中编辑、调试、监视CSSQHTML和JavaScript?br /> Visit the Firebug website for documentation, screen shots, and discussion forums:
讉KFirebug站点可以获得文档、效果图和讨坛?/p>

[Firebug发布|址]
https://addons.mozilla.org/en-US/firefox/addon/1843
[Firebug站点]
http://www.getfirebug.com
[Firebug文档]
http://www.getfirebug.com/docs.html
[Firebug的bug]
http://code.google.com/p/fbug/issues/list
[Firebug视图]
Console 控制?br /> Script  脚本
DOM     文档对象l构
Net     |络

[Firebug的console API]
console API文档, http://www.getfirebug.com/console.html
console.time()用于计算旉

[Firebug常见问题]
在FireBug的console对象输出Ӟ需要注意第一个参数被自动识别为格式字W串

Firefox使用Firebug中debug视图下的step into, step over{按钮需要先讄javascript脚本的断?


文章出处QDIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/2007927/74522.html)



菜毛毛 2009-05-18 09:30 发表评论
]]>
q期的ext目ȝ(?http://www.aygfsteel.com/caizh2009/articles/270927.html菜毛毛菜毛毛Fri, 15 May 2009 13:16:00 GMThttp://www.aygfsteel.com/caizh2009/articles/270927.htmlhttp://www.aygfsteel.com/caizh2009/comments/270927.htmlhttp://www.aygfsteel.com/caizh2009/articles/270927.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/270927.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/270927.html最q也l于使用ext做了一个小的web目。第一ơ用ext做项目毕竟经验不I仅记下一些开发思\和需要注意的地方?/p>

 

Ext Js 2.2+Spring 2.5,没有使用struts,hibernate

 

1Q目录结?/strong>

aQjs部分

根目录下建立/js/ext/目录Q存放所有和ext相关的js文g?js/ext/目录下可建立ext相关子目?/p>

/js/ext/adapter/ ?存放适配器jquery,prototype,yui。。?/p>

/js/ext/experimental/ ?存放ext一些未正式推出的组Ӟ可参考ext开发包examples例子部分?/p>

/js/ext/plugins/ ?存放ext扩展lgQ例如ext的patch文gQext主题Q扩展组建等{?/p>

/js/ext/resources/ ?不用说了Qext开发包中的resources目录直接拯?/p>

/js/ ?目录下可以放一些最常用 的js文g?/p>

/js/ext/ ?目录下放|ext-all.jsQext-base.jsQext-lang-zh_CN.jsQext核心文gQ?/p>

bQ模块部?/p>

根目录下建立/module/文g夹,每个模块?module/目录下新建文件夹Q例如:

/module/comment/ ?评论模块

/module/stat/ ?l计模块

每个模块目录下新建js目录存放当前模块需要引用的js文gQ例?module/comment/js/comment.js

为简化开发不使用strutsQ直接用jsp代替strutsQ每个模块下新徏action.jsp替代structs接受

ext ajaxhQaction.jsp不负责页面的昄。只负责service层方法调用及h跌{?/p>

cQ权限部?/p>

根目录下直接Z个security目录完事?/p>

2Q基本布局及权?/strong>

border布局Qcenter区域使用TabPanell徏增加新的iframeH口装蝲pȝ不同模块?/p>

暂不在意iframe的效率问题,可能做到每个系l模?UI部分的独立?/p>

初始化布局时TabPanellg中添加默认的Ƣ迎d面Q解决TabPanellgd新窗口时高度增加的bug?/p>

权限pȝ设计参考spring security的数据库设计Q项目后期可与spring security整合?/p>

3Q用戯问超?/strong>

解决两种情况下的用户讉K时?br /> aQ普通httph的session时?br /> bQ异步httph的session时Q用ext后大部分的界面刷新都是异步的ajaxh?br />
不管是那U类型的httphL可以׃个过滤器来捕捉?br /> 分类Q普通httph的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有?br /> 其实对于常见的ajax框架Qheader中还有标Cpn份的header信息?br />
对于普通的httphQ发现session时后直接重定向C个超旉面,昄讉K时?br /> 对于异步httphQ发现session时后则向请求的response中写入特定的时头信息,客户端ajax对象?br /> 头信息,发现有超时状态标志后调用昄时信息的javascriptҎQ提C用戯问超时?/p>

 

服务器端session时后在qo器中为responsed新的头信息,标记该请求超Ӟ

Js代码 复制代码
  1. if(r.getHeader("x-requested-with")!=null      
  2.     && r.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){     
  3.     response.setHeader("sessionstatus","timeout");     
  4. }  

 

使用Ext.Ajaxt对象完成异步h的交互,Ext.Ajax是单实例对象Q非帔R要,全局单一Ext.Ajax实例Q)?br /> 注册Ext.Ajax的requestcomplete事gQ每个ajaxh成功后首先响应该事g。在该事件的回调函数里面判断
讉Kh是否时。用Ext.Ajax对象的好处是Q只需要引入一个包含了几行时处理代码的js文gQ就可以
为当前应用增加超时处理功能,原有代码不需要做M修改?

 

使用Ext.Ajaxt对象完成异步h交互Q假如checkUserSessionStatus是你的回调方法,每个面引用Q?

Js代码 复制代码
  1. Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);   
  2. function checkUserSessionStatus(conn,response,options){   
  3.     //Ext重新装了response对象   
  4.     if(typeof response.getResponseHeader.sessionstatus != 'undefined'){   
  5.         //发现h时Q退出处理代?..   
  6.     }   
  7. }  
 

可以利用的几个特性:
aQ所有的ajaxh均带有x-requested-with:XMLHttpRequest头信?br /> bQExt.Ajax是单实例对象Q非帔R要,全局单一Ext.Ajax实例Q)
cQ注册Ext.Ajax的requestcomplete事gQ每个ajaxh成功后首先响应该事gQ概늱似spring的aop拦截Q?

 

对于其他的ajax框架Q解决用戯问请求超时这个问题的思\是类似的?/p>

 

在这里推荐一个很实用的JsҎQ?/p>

Js代码 复制代码
  1. function getRootWin(){   
  2.     var win = window;   
  3.     while (win != win.parent){   
  4.         win = win.parent;   
  5.     }   
  6.     return win;   
  7. }   

 

通过该方法,可以在一个Q意深度的iframe中调用父iframe中的Ҏ。具体到q里是无论哪一个iframe中的用户?/p>

问请求超Ӟ都可以通过该方法调用最外层iframe中的退出方法,q样便ؓ用户提供了一个统一的访问超旉出的UI

呈现?/p>

 

4Q系l异常处?/strong>

实际业务代码中的各U异常封装成IOException, ServletException异常Q指定过滤器捕获。其余处理思\?br /> 用户讉K时处理?/p>

 

5Q添加jquery支持

使用jquery手的且希望在Ext目中同时用某些jquery插g的时候,djquery支持?/p>

面head中直接添加:

Js代码 复制代码
  1. <link rel="stylesheet" type="text/css" href="/js/ext/resources/css/ext-all.css" />   
  2.   
  3. <script type="text/javascript" src="/js/ext/adapter/jquery/jquery.js"></script>   
  4. <script type="text/javascript" src="/js/jquery.cookie.js"></script>   
  5. <script type="text/javascript" src="/js/ext/adapter/jquery/ext-jquery-adapter.js"></script>   
  6.   
  7. <script type="text/javascript" src="/js/ext/ext-base.js"></script>   
  8. <script type="text/javascript" src="/js/ext/ext-all.js"></script>   
  9. <script type="text/javascript" src="/js/ext/ext-lang-zh_CN.js"></script>  

 

6Q修改布局

常见的布局一般是Qheader,center,footer,以及一个位于页面左侧的tree menu。其实对于Ext的UI实现来说Q?/p>

Lheader,footer也不错,因ؓExt的UI本来做得挺好看再加上去掉header及footer后可以ؓcenter增加?/p>

可视区面积Q一个页面还可以昄更多的内宏V?br />
应该可以支持q两U布局方式的切换,交给用户选择?br /> 试了几次Q在border布局初始化完毕之后再惛_掉header,footer区域好像比较ȝQext的官方论坛上也说?/p>

计border布局的本意就是应付静态呈现?br /> 但是好像已经有javaeye上的同志实现了动态的border布局呵呵。可以参考一?EXT2的动态BorderLayoutlg ?/p>

 

7Q更换主?/strong>

去ext的官|上下蝲各种主题皮肤 Themes for Ext 2.0

主题皮肤文g拯x?js/ext/plugins/theme/css/,/js/ext/plugins/theme/images/ 目录

最好将用户选择的主题配|保存在cookie中,q样用户每次登陆都可以用相同的界面主题?/p>

Ext主题切换Q?/p>

Js代码 复制代码
  1. if($.cookie('ext.theme') != null && $.cookie('ext.theme') != 'default'){   
  2.     Ext.util.CSS.swapStyleSheet("theme","/js/ext/plugins/theme/css/"+$.cookie('ext.theme'));   
  3. }  

 

8Q添加自定义的toolbar图标

直接参考javaeye上的q边文章 ׃n一些Ext的图?/a> 卛_Q作者提供的图标很好看,使用也非常简单?/p>

 

9Q生成Excel文档
最先参考的资料是extjs论坛上面的这文章:
GridPanel directly to Excel.
作者思\不错Q就是利用javascript直接dGridPanel的store数据Q然后生成一个描qexcel文档的xml数据Q最?br /> 再通过一个包含了该xml数据?data" URL下蝲该excel?br /> 该方法的好处是通用性比较强Q生成的excel文档也不隄Qƈ且是不需要服务器端参与处理的一U纯客户端解x案?br /> 但是最大的~点是目前IE7不支持(This needs a browser that supports data URLs. FF, Opera and IE8 will support this.Q?br /> 而后发现dojochina|站上的一个用h理和修改了这个生成excel文档的实现方法?/p>

引用
以下的几个问题我都已l整理和修改Q?br /> 1、没有考虑到含有序号和选择框的gridQ?br /> 2、utf8转换bug.
3、宽度的bug
4、不支持ie6、ie7和Safari

 

原文地址Q?a >官方Grid导出到Excel修正?/a> Q作者给出的代码有些问题,需要略微进行些调整Q?br />
如果是IE览器,客户端将以multipart/form-data方式向服务器端提交该xml数据?br /> 原文l出了后台由php实现时的exportexcel.php代码?/p>

 

如果后台由java实现Qexportexcel.jsp

Java代码 复制代码
  1. <%@page import="java.util.Date"%>   
  2. <%@page import="org.apache.commons.lang.time.DateFormatUtils"%>   
  3. <%@page import="com.oreilly.servlet.multipart.*"%>   
  4. <%   
  5.     response.setContentType("application/vnd.ms-excel");   
  6.     response.setHeader("Content-disposition","attachment;filename="+   
  7.                        (DateFormatUtils.format(new Date(),"yyyyMMddHHmmss"))+".xls" );    
  8.   
  9.     MultipartParser parse = new MultipartParser(request,1000000000);   
  10.     Part part = null;   
  11.     int maxcount = 0;   
  12.     ParamPart param = null;   
  13.        
  14.     while(true){   
  15.         part = parse.readNextPart();   
  16.         if(part == null || maxcount>1000)   
  17.             break;   
  18.         if(part.isParam() && part.getName().equalsIgnoreCase("exportContent")){   
  19.             param = (ParamPart)part;   
  20.             break;   
  21.         }   
  22.         maxcount++;   
  23.     }   
  24.        
  25.     if(param!=null){   
  26.         response.getWriter().println(param.getStringValue());   
  27.     }else{   
  28.         ;   
  29.     }   
  30. %>  

 

q里使用 com.oreilly.servlet 解析multipart/form-datacd数据?a >com.oreilly.servlet 很适合文gQ表单؜合提
交、多文g上传的数据解析?/p>

 

10Qjs文g理

凡是q种Zjavascript的富客户端解x案一大问题就是js文g太多。每个页面不仅要导入Ext的css,js文gQ?br /> q要导入每个面应用需要的一些js文gQ这L理v来很ȝ?br /> 原来的情况,臛_要导入:

Html代码 复制代码
  1. <link rel="stylesheet" type="text/css" href="/js/ext/resources/css/ext-all.css" />  
  2.   
  3. <script type="text/javascript" src="/js/ext/adapter/jquery/jquery.js"></script>  
  4. <script type="text/javascript" src="/js/jquery.cookie.js"></script>  
  5. <script type="text/javascript" src="/js/ext/adapter/jquery/ext-jquery-adapter.js"></script>  
  6.   
  7. <script type="text/javascript" src="/js/ext/ext-base.js"></script>  
  8. <script type="text/javascript" src="/js/ext/ext-all.js"></script>  
  9. <script type="text/javascript" src="/js/ext/ext-lang-zh_CN.js"></script>  
  10. <script type="text/javascript" src="/js/extajax.js"></script>  
  11. <script type="text/javascript" src="/js/exttheme.js"></script>  

 

推荐使用 JSLoader 理众多的jsQcss文g
1Q编写一个js文gl一理支持所有公用cssQjs文g的动态导?/p>

Js代码 复制代码
  1. //djquery支持   
  2. JSLoader.loadJavaScript("/js/ext/adapter/jquery/jquery.js");   
  3. JSLoader.loadJavaScript("/js/jquery.cookie.js");   
  4. JSLoader.loadJavaScript("/js/ext/adapter/jquery/ext-jquery-adapter.js");   
  5. //Ext支持   
  6. JSLoader.loadStyleSheet("/js/ext/resources/css/ext-all.css");   
  7. JSLoader.loadJavaScript("/js/ext/ext-base.js");   
  8. JSLoader.loadJavaScript("/js/ext/ext-all.js");   
  9. JSLoader.loadJavaScript("/js/ext/ext-lang-zh_CN.js");   
  10. //加蝲自定义toolbar图标css样式   
  11. JSLoader.loadStyleSheet("/js/ext/plugins/icon/css/ext-extend.css");   
  12. //加蝲用户时,异常处理   
  13. JSLoader.loadJavaScript("/js/extajax.js");   
  14. //主题理   
  15. JSLoader.loadJavaScript("/js/exttheme.js");   
  16. //Excel导出支持   
  17. JSLoader.loadJavaScript("/js/ext.excel.js");  

2Q每个页面只需要引入:

Html代码 复制代码
  1. <script type="text/javascript" src="/js/jsloader.js"></script>  
  2. <script type="text/javascript" src="/js/assets.js"></script>   
http://www.javaeye.com/topic/320633


菜毛毛 2009-05-15 21:16 发表评论
]]>
Tutorial:EXT?1http://www.aygfsteel.com/caizh2009/articles/270868.html菜毛毛菜毛毛Fri, 15 May 2009 08:24:00 GMThttp://www.aygfsteel.com/caizh2009/articles/270868.htmlhttp://www.aygfsteel.com/caizh2009/comments/270868.htmlhttp://www.aygfsteel.com/caizh2009/articles/270868.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/270868.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/270868.htmlTutorial:Introduction to Ext 2.0 (Chinese)

From Learn About the Ext JavaScript Library

Jump to: navigation, search
Summary: 对Ext库的M概述q介l如何完成一些常见的E序d。新用户应从q里开始?
Author: Brian Moeskau(译者:Frank Cheung)
Published: 2007q十一月一?
Ext Version: 2.0
Languages: en.png English cn.png Chinese jp.png Japanese

kr.png Korean it.png Italian id.png Bahasa Indonesia

本教E适用于Ext 2.0的版本,?a title="Tutorial:Introduction to Ext" >版本1.x仍可扑ֈ?

无论你是Ext库的新手Q抑或是想了解Ext的hQ本文章的内容都适合你。本文将单地介绍Ext的几个基本概念,和如何快速地做出一个动态的面q运行v来,假设读者已具备了一些JavaScriptl验和简单了解HTML的文档对象模型(document object model QDOMQ?

下蝲Ext

如果你未曾下载过Q那应从官方|站那里下蝲最新版本的Ext http://extjs.com/downloads ?/p>

因应各种的下载需求,有几U不同的可选项。通常圎ͼ最E_的版本,是较多h的选择。下载解包后Q那?strong>example文g夹便是一个探索Ext的好地方Q?/p>

开始!

下蝲CZ文g


我们讲讲怎么使用ExtQ来完成一些JavaScript常见的Q务。如果你惌p试,应该先?tt>IntroToExt2.zip Q用来构建已下面的Ext代码?/p>

Zip包里有三个文ӞExtStart.html, ExtStart.js?strong>ExtStart.css。解包这三个文g到Ext的安装目录中Q例如,Ext是在“C:\code\Ext\v2.0”中,那应该在"v2.0"里面新徏目录“tutorial”。双?strong>ExtStart.htmQ接着你的览器打开启动面Q应该会有一条消息告诉你配置已完毕。如果出CJavascript错误Q请按照面上的指引操作?/p>

现在在你常用的IDE中或文本~辑器中Q打开ExtStart.js看看?/p>

Ext.onReady(function() {
alert("Congratulations!  You have Ext configured correctly!");
});

Ext.onReady可能是你接触的第一个也可能是在每个面都要使用的方法。这个方法会在DOM加蝲全部完毕后,保证面内的所有元素能被Script引用QreferenceQ之后调用。你可删除alert()那行Q加入一些实际用途的代码试试?/p>

ElementQExt的核?/span>

大多数的JavaScript操作都需要先获取面上的某个元素的引用(referenceQ?好让你来做些实质性的事情。传l的JavaScript做法Q是通过ID获取Dom节点的:

var myDiv = document.getElementById('myDiv');

q毫无问题,不过q样单单q回一个对象(DOM节点Q,用v来ƈ不是太实用和方便。ؓ了要用那节点q点事情Q你q将要手工编写不的代码Q另外,对于不同cd览器之间的差异Q要处理h可真头大了?/p>

q入Ext.element 对象。元素(elementQ的的确是Ext的心脏地带,--无论是访问元素(elementsQ还是完成一些其他动作,都要涉及它。Element的API是整个Ext库的基础Q如果你旉不多Q只是想了解Ext中的一两个cȝ话,Element一定是首选!

由ID获取一个Ext Element 的相应代码如下(首页ExtStart.htm 包含一个ID?#8220;myDiv”?divQ然后,在ExtStart.js中加入下列语句)Q?The corresponding code to get an Ext Element by ID looks like this (the starter page ExtStart.html contains a div with the id "myDiv," so go ahead and add this code to ExtStart.js):

Ext.onReady(function() {
var myDiv = Ext.get('myDiv');
});

再回头看看Element对象Q发C么有的东东呢?

  • Element包含了常见的DOMҎ和属性,提供一个快L、统一的、跨览器的接口Q若使用Element.dom的话Q就可以直接讉K底层DOM的节炏V)Q?
  • Element.get()Ҏ提供内置~存QCacheQ,多次讉K同一对象效率上有极大优势Q?
  • 内置常用的DOM节点的动作,q且是跨览器的定位的位|、大、动甅R拖攄{(d/U除 CSS c? d/U除事g处理E序, 定位, 改变大小, 动画, 拖放Q?

q意味着你可用少量的代码来做各种各样的事情,q里仅仅是一个简单的例子Q完整的列表?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Element" rel="nofollow">Element API 文档中)?/p>

l箋在ExtStart.js中,在刚才我们获取好myDiv的位|中加入Q?/p>

myDiv.highlight();      //黄色高亮昄然后渐退
myDiv.addClass('red');  // d自定义CSSc?(在ExtStart.css定义)
myDiv.center();         //在视图中元素居?/span>
myDiv.setOpacity(.25);  // 使元素半透明

获取多个DOM的节?/span>

通常情况下,惌取多个DOM的节点,难以依靠ID的方式来获取。有可能因ؓ没设|ID,或者你不知道ID,又或者直接用ID方式引用有太多元素了。这U情况下Q你׃不用ID来作取元素的依据Q可能会用属性(attributeQ或CSS Classname代替。基于以上的原因QExt引入了一个异常强大的Dom Selector库,叫做DomQuery?/p>

DomQuery可作为单独的库用,但常用于ExtQ你可以在上下文环境中(ContextQ获取多个元素,然后通过Element接口调用。o人欣喜的是,Element对象本n便有Element.select的方法来实现查询Q即内部调用DomQuery选取元素。这个简单的例子中,ExtStart.htm包含若干D落Q?lt;p>标签Q,没有一个是有ID的,而你惌村֜通过一ơ操作马上获取每一D,全体执行它们的动作,可以q样做:

// 每段高亮昄
Ext.select('p').highlight();

Element.select在这个例子中的方便性显露无疑。它q回一?a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.CompositeElement" rel="nofollow">复合元素Q能通过元素接口QElement interfaceQ访问每个元素。这样做的好处是可不用@环和不分别访问每一个元素?

DomQuery的选取参数可以是一D较长的数组Q其中包括W3C CSS3 Dom选取器、基本XPatch、HTML属性和更多Q请参阅DomQuery API文档以了解这功能强大的库个中l节?/p>

响应事g

到这范例为止Q我们所写的代码都是攑֜onReady中,卛_面加蝲后M立即执行Q功能较单一——这L话,你便知道Q如何响应某个动作或事g来执行你希望做的事情Q做法是Q先分配一个functionQ再定义一个event handler事g处理器来响应。我们由q个单的范例开始,打开ExtStart.jsQ编辑下列的代码Q?/p>

Ext.onReady(function() {
Ext.get('myButton').on('click', function(){
alert("你单M按钮");
});
});

代码依然会加载好面后执行,不过重要的区别是Q包含alert()的function是已定义好的Q但它不会立卛_被执行,是分配到按钮的单M件中。用显的文字解释,是Q获取ID?myDottom'元素的引用,监听M发生q个元素上被单击的情况,q分配一个function,以准备Q何单d素的情况?/p>

一般来_Element.select也能做同L事情Q即作用在获取一l元素上。下一例中Q演CZ面中的某一D落被单dQ便有弹出窗口:

Ext.onReady(function() {
Ext.select('p').on('click', function() {
alert("你单M一D落;");
});
});

q两个例子中Q事件处理的function均是单几句,没有函数的名Uͼq种cd函数UCؓ“匿名函数Qanonymous functionQ?#8221;Q即是没有名的的函数。你也可以分配一个有名字的event handler,q对于代码的重用或多个事件很有用。下一例等效于上一例:

Ext.onReady(function() {
var paragraphClicked = function() {
alert("你单M一D落;");
}
Ext.select('p').on('click', paragraphClicked);
});

到目前ؓ止,我们已经知道如何执行某个动作。但当事件触发时Q我们如何得知这个event handler执行时是作用在哪一个特定的元素上呢Q要明确q一炚w常简单,Element.onҎ传入到even handler的function中(我们q里先讨论第一个参敎ͼ不过你应该浏览API文档以了解even handler更多的细节)。在我们之前的例子中Qfunction是忽略这些参数的Q到q里可有许的改变,——我们在功能上提供了更深层次的控制。必d说明的是Q这实际上是Ext的事件对象(event objectQ?一个跨览器和拥有更多控制的事件的对象。例如,可以用下列的语句Q得到这个事件响应所在的DOM节点Q?br />

Ext.onReady(function() {
var paragraphClicked = function(e) {
Ext.get(e.target).highlight();
}
Ext.select('p').on('click', paragraphClicked);
});

注意得到的e.target是DOM节点Q所以我们首先将其{换成为EXT的Elemnet元素Q然后执行欲完成的事Ӟq个例子中,我们看见D落是高亮显C的?br />

使用Widgets

 (Widget原意?#8220;器?#8221;Q现指页面中UI控g)

除了我们已经讨论q的核心JavaScript库,当前的Ext亦包括了一pd的最前端的JavaScirptUIlg库。文本以一些常用的widgetZ子,作简单的介绍?/p>

MessageBox

比v略ؓ沉闷?#8220;HelloWolrd”消息H口Q我们做许变化Q前面我们写的代码是Q单L个段落便会高亮显C,现在是单L落,在消息窗口中昄D落内容出来?br /> 在上面的paragraphClicked的function中,这行代码:

Ext.get(e.target).highlight();

替换为:

var paragraph = Ext.get(e.target);
paragraph.highlight();
Ext.MessageBox.show({
title: 'Paragraph Clicked',
msg: paragraph.dom.innerHTML,
width:400,
buttons: Ext.MessageBox.OK,
animEl: paragraph
});

q里有些新的概念需要讨Z下。在W一行中我们创徏了一个局部变量(Local VariableQ来保存某个元素的引用,卌单击的那个DOM节点Q本例中QDOM节点指的是段落paragrah,事因我们已经定义该事件与<p>标签发生兌的了Q。ؓ什么要q样做呢Q嗯...观察上面的代码,我们需要引用同一元素来高亮显C,在MessageBox中也是引用同一元素作ؓ参数使用?br /> 一般来_多次重复使用同一|ValueQ或对象Q是一个不好的方式Q所以,作ؓ一个具备良好OO思维的开发者,应该是将其分配到一个局部变量中Q反复用这变量Q?/p>

现在Qؓ了我们接下来阐述新概늚演示Q请观察MessageBox的调用。乍一看,q像一q串的参C入到Ҏ中,但仔l看Q这是一个非常特别的语法。实际上Q传入到MessageBox.show的只有一个参敎ͼ一个Object literalQ对象字面化Q?包含一l属性和属性倹{在Javascript中,对象字面化是动态的Q你可在M时候用{和}创徏一个典型的对象(object)。其中的字符׃pd的name/valuel成的属性,属性的格式是[property name]:[property value]。在整个Ext中,你将会经帔R到这U语法,因此你应该马上消化ƈ吸收q个知识点!
使用对象字面化Object Literal的原因是什么呢Q主要的原因?#8220;灉|性、可伸羃性(flexibilityQ?#8221;的考虑"Q随时可新增、删除属性,亦可不管序地插入。而方法不需要改变。这也是多个参数的情况下Qؓ最l开发者带来不的方便Q本例中的MessageBox.show())。例如,我们说这儿的foo.actionҎQ有四个参数Q而只有一个是你必M入的。本例中Q你惛_中的代码可能会是q样的foo.action(null, null, null, 'hello').,若果那方法用Object Literal来写Q却是这P foo.action({ param4: 'hello' })Q这更易用和易读?/p>

Grid

Grid是Ext中h们最惛_睹ؓ快的和最为流行Widgets之一。好Q让我们看看怎么L地创Z个Gridq运行。用下列代码替换ExtStart.js中全部语句:

Ext.onReady(function() {
var myData = [
['Apple',29.89,0.24,0.81,'9/1 12:00am'],
['Ext',83.81,0.28,0.34,'9/12 12:00am'],
['Google',71.72,0.02,0.03,'10/1 12:00am'],
['Microsoft',52.55,0.01,0.02,'7/4 12:00am'],
['Yahoo!',29.01,0.42,1.47,'5/22 12:00am']
];
 
var myReader = new Ext.data.ArrayReader({}, [
{name: 'company'},
{name: 'price', type: 'float'},
{name: 'change', type: 'float'},
{name: 'pctChange', type: 'float'},
{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
]);
 
var grid = new Ext.grid.GridPanel({
store: new Ext.data.Store({
data: myData,
reader: myReader
}),
columns: [
{header: "Company", width: 120, sortable: true, dataIndex: 'company'},
{header: "Price", width: 90, sortable: true, dataIndex: 'price'},
{header: "Change", width: 90, sortable: true, dataIndex: 'change'},
{header: "% Change", width: 90, sortable: true, dataIndex: 'pctChange'},
{header: "Last Updated", width: 120, sortable: true,
renderer: Ext.util.Format.dateRenderer('m/d/Y'),
dataIndex: 'lastChange'}
],
viewConfig: {
forceFit: true
},
renderTo: 'content',
title: 'My First Grid',
width: 500,
frame: true
});
 
grid.getSelectionModel().selectFirstRow();
});

q看上去很复杂,但实际上加v来,只有四行代码Q不包含试数据的代码)?

  • W一行创建数lƈ作ؓ数据源。实际案例中Q你很可能从数据库、或者WebService那里得到动态的数据?
  • 接着Q我们创建ƈ加蝲data storeQ?data store会告诉Ext的底层库接手处理和格式化q些数据。不同的数据cddcReader中指明?
  • 接着Q我们创Z个Grid的组Ӟ传入各种的配||有:
    • 新的data store, 配置好测试数据和reader
    • 列模型column model定义?列columns的配|?
    • 其他的选择指定了Grid所需的功?
  • 最后,通过SelectionModel告诉Grid高亮昄W一行?

不是太困隑֐Q如果一切顺利,完成之后你会看到像这LQ?

Image:IntroToExt2_grid.gif

当然Q你现在q未掌握q段代码的某些细节,但先不要紧,q个例子的目的是告诉你,只要学习了少量的几行代码Q创Z个富界面的多功能的UIlg是可能的。更多的gridl节读者可作ؓ一U练习去学习。这儿有许多学习Grid的资源,Ext Grid教程?a class="external text" title="http://extjs.com/deploy/dev/examples/" rel="nofollow">Grid交互演示交和Grid API文档?

q有更多?.

q只是其中一部分。还有一打的UI Widgets可以供调用,?layouts, tabs, menus, toolbars, dialogs, tree view{等。请探烦 范例演示?

使用Ajax

在弄好一些页面后Q你已经懂得在页面和脚本之间的交互(interactQ原理。接下来Q你应该掌握的是Q怎样与远E服务器Qremote serverQ交换数据,常见的是从数据库加蝲数据QloadQ或是保存数据(saveQ到数据库中。通过JavaScript异步无刷C换数据的q种方式Q就是所谓的Ajax。Ext内徏卓越的Ajax支持Q例如,一个普遍的用户操作是Q异步发送一些东西到服务器,然后QUI元素Ҏ回应QResponseQ作出更新。这是一个包含text input的表单,一个div用于昄消息Q注意,你可以在ExtStart.html中加入下列代码,但这必须要访问服务器Q:

<div id="msg"></div>
<div>
Name: <input type="text" id="name" />
<input type="button" id="okButton" value="OK" />
</div>
<div id="msg"></div>

接着Q我们加入这些处理交换数据的JavaScript代码到文件ExtStart.js?用下面的代码覆盖)Q?/p>


Ext.onReady(function(){
Ext.get('okButton').on('click', function(){
var msg = Ext.get('msg');
msg.load({
url: 'ajax-example.php', // <-- 按实际改?/span>
params: 'name=' + Ext.get('name').dom.value,
text: 'Updating...'
});
msg.show();
});
});

注意Q?/strong> q个例子需要web server才可q行?览器的URL地址不应是以file://开_而是http://开_否则的话Ajax的数据交互将不会工作。Localhost可以工作得很好Q但必须是通过http的?

q种模式看v来已l比较熟悉了吧!先获取按钮元素,加入一个匿名函数监听单凅R在事g处理器中Qevent handlerQ,我们使用一个负责处理Ajaxh、接受响应(ResponseQ和更新另一个元素的Ext内徏c,UCUpdateManagerUpdater。UpdateManager可以直接使用Q或者和我们现在的做法一P通过Element的loadҎ来引用(本例中该元素是id?#8220;msg“的divQ。当使用Element.loadҎQ请求(request)会在加工处理后发送,{待服务器的响应QResponseQ,来自动替换元素的innerHTML。简单传入服务器url地址Q加上字W串参数Q便可以处理q个hQ本例中Q参数值来?#8220;name”元素的value),而text值是h发送时提示的文本,完毕后显C那个msg的divQ因为开始时默认隐藏Q。当Ӟ和大多数Extlg一PExt.Ajax 有许多的参数可选,不同的Ajaxh有不同的Ҏ。而这里仅演示最单的那种?/p>


最后一个关于Ajax隐晦的地方就是,服务器实际处理请求和q回QResposneQ是具体q程。这个过E会是一个服务端面Q一个ServletQ一个Http调度q程Q一个WebService,甚至是Perl或CGI脚本Q即不指定一个服务器都可以处理的httph。让人无法预料的是,服务器返回什么是服务器的事情Q无法给一个标准的例子来覆盖阐q所有的可能性。?/p>

下面的例子是一些常见的语言以方便开始测?q段代码输出刚才我们传入'name'的那个值到客户端,卛_送什么,q回什么,然后在我们刚才写?msg' div中加入该文本Q。PHP的已l包含在下蝲文g中,文g名ؓ'ajax-example.php'Q可换成你自己服务端的代码:

Plain PHP

<?php if(isset($_POST['name'])) {
echo 'From Server: '.$_POST['name'];
}
?>

CakePHP

<?php if(isset($this->data['name'])) {
$this->flash('From Server: '.$this->data['name']);
}
?>

Django

from django.http import HttpResponse
 
def ajax_request(request):
return HttpResponse('From Server: %s' % request.POST.get('name', 'nada'))

Perl

#!/usr/bin/perl
use strict;
use warnings;
use CGI;
 
my $Query = new CGI;
 
print $Query->header();
print "Hello from : ".$Query->param('name');
 
exit;

ASP.Net

protected void Page_Load(object sender, EventArgs e)
{
if (Request.Form["name"] != null)
{
Response.Write("From Server: " + Request.Form["name"]);
Response.End();
}
}

ColdFusion

<cfif StructKeyExists(form, "name")>
<cfoutput>From Server: #form.name#</cfoutput>
</cfif>

JSP

From Server: ${param.name}

使用Ajax的真正挑战,是需要进行适当的手工编码,q相应格式化为服务端可接收的数据l构。有几种格式供h们选择Q最常用为JSON/XML)?Ext没有跟Q何服务器语言有独家联p,因此其它特定语言的库亦可用于Ext处理Ajax服务。只要页面接受到l果是EXT能处理的数据格式QExtl不会干涉服务器其他的事情!推荐参阅我们提供?a class="external text" title="http://extjs.com/learn/Manual:Resources#Platform-Specific_Resources" rel="nofollow">各个q_资源以了解服务端框架的更多资讯和辅助?/p>

下一步是Q?/span>

现在你已l一睹Ext其芳容,知道她大概能做些什么了。下面的资源有助您进一步深入了解:

Retrieved from "


菜毛毛 2009-05-15 16:24 发表评论
]]>EXT新手 建立自己的工Lhttp://www.aygfsteel.com/caizh2009/articles/270850.html菜毛毛菜毛毛Fri, 15 May 2009 07:06:00 GMThttp://www.aygfsteel.com/caizh2009/articles/270850.htmlhttp://www.aygfsteel.com/caizh2009/comments/270850.htmlhttp://www.aygfsteel.com/caizh2009/articles/270850.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/270850.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/270850.html 像鱼儿游在水里一样对JSq用自如?br />
自己可以创徏JavaScript的类、明白类原型Qclass's prototypeQ的原理Q?br /> 和明白函数的作用域都是有益的帮助?br />
明白AjaxZ么要异步方式也是其中的一个知识点?br />
论坛?0Q所提出的问题很大原因是对JavaScript知识不牢固所臻I而不是EXT API的问题?br />
当真正开始用EXT做开发了Q那么安装目录下examples/*的文件夹过70个例子便是研I的好对象,
q些例子Z展示了你日后会使用的大多数技巧或Ҏ?br />
接着Q最好就是先拿examples/*的文件夹中例子练一l手Q做一些简单、轻型的项目?br /> 如果直接拿EXTl合到程序去开发,很可能你会因来越复杂的问题惔x陗?br />
把每一的 知识?技?都做成可单独q行文gQ这样以便你以后参考,q有一个好处是Q可以发到论坛上Q然后我们放到examples/*的文件夹Q以便我们的试q协助你?br />
如果能按照以上的dQ我怿q是一个很好的累积。而且按照我的角度看,整个UI是q样一点一Ҏv来?br />
Animal

Ext官方中文教程列表

特别鸣谢Q?a target="_blank">Ext中文?/a>整理、维?
注意Q{载文?请保留原始链接和|名

入门:

Tutorial:EXT?
extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_(Chinese)
Tutorial:Ext 2q?
extjs.com/learn/Ext_2_Overview_(Chinese)
Tutorial:EXT新手
extjs.com/learn/Tutorial:EXT新手
Tutorial:怎么L地进入Ext的世?
extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_(Chinese)
Tutorial:Javascript中的作用域(scopeQ是什?(一)
extjs.com/learn/Tutorial:What_is_that_Scope_all_about_(Chinese)
Tutorial:Javascript中的作用域(scopeQ是什?(?
extjs.com/learn/What_is_that_Scope_all_about2_(Chinese)
Manual:Ext源码概述
extjs.com/learn/Manual:Ext_Source_Overview_(Chinese)
Manual:Ext与RESTful Web Services
extjs.com/learn/Manual:RESTful_Web_Services_(Chinese)

E序设计:

Tutorial:如何合理地规划一个应用程?
extjs.com/learn/Tutorial:Application_Layout_for_Beginners_(Chinese)
Tutorial:如何本地化ext的教E?
extjs.com/learn/Tutorial:Localizing_Ext_(Chinese)
Tutorial:xtype的含?
extjs.com/learn/Tutorial:Xtype_defined_(Chinese)
Tutorial:扩展Ext中的lg
extjs.com/learn/Manual:Component:Extending_Ext_Components(Chinese)
Tutorial:扩展与插件之间的区别
extjs.com/learn/Manual:Component:Extension_or_Plugin_zh-CN
Tutorial:Extlg的复?
extjs.com/learn/Manual:Component:Extending_Ext_Components(Chinese)
Tutorial:从源码生成Ext
extjs.com/learn/Tutorial:Building_Ext_From_Source_(Chinese)

基础用法:

Tutorial:DomQuery基础
extjs.com/learn/Tutorial:DomQuery_Basics(Chinese)
Tutorial:Ext中的事g
extjs.com/learn/Tutorial:Events_Explained_(Chinese)
Tutorial:q模?
extjs.com/learn/Tutorial:Getting_Started_with_Templates_(Chinese)
Tutorial:模板QTemplatesQ的函数
extjs.com/learn/Tutorial:Utilizing_Format_Features_of_Templates_(Chinese)
Manual:事g的处?
extjs.com/learn/Manual:Intro:Event_Handling_cn
Manual:Ext中的l承
extjs.com/learn/Manual:Intro:Inheritance_(Chinese)
Manual:Ext的类设计
extjs.com/learn/Manual:Intro:Class_Design_cn
Manual:Ajax通讯
extjs.com/learn/Manual:Core:Ext.Ajax_(Chinese)
Manual:JSON处理Ҏ
extjs.com/learn/Manual:Core:Working_with_JSON_(Chinese)
Manual:函数的原型扩?
extjs.com/learn/Manual:Utilities:Function_(Chinese)

lg的?

Tutorial:Tab标签?
extjs.com/learn/Tutorial:TabPanel_Basics_(Chinese)
Tutorial:Ext 1.x中的布局
extjs.com/learn/Tutorial:Using_Layouts_with_Ext_-_Part_1_(Chinese)
Tutorial:Gridlg初学
extjs.com/learn/Tutorial:Beginning_Using_the_Grid_Component_(Chinese)
Tutorial:Grid的数据分?
extjs.com/learn/Tutorial:Basics_of_Paging_With_the_Grid_Component_(Chinese)
Tutorial:Ext菜单器g
extjs.com/learn/Tutorial:Ext_Menu_Widget_(Chinese)
Tutorial:表单lg初学
extjs.com/learn/Tutorial:Getting_Started_with_Forms_(Chinese)
Tutorial:表单lg初学(?
extjs.com/learn/Tutorial:Loading_Data_Into_and_Submitting_a_Form_(Chinese)
Manual:Cookie的存?
extjs.com/learn/Manual:Core:State_(Chinese)

YUI-Ext(Ext前n)的相x?/h2>
Tutorial:EXT新手Q徏立自q工具(ToolkitQ?
extjs.com/learn/Tutorial:EXT新手
Tutorial:如何用YUIL做JavaScript动画
extjs.com/learn/Tutorial:如何用YUIL做JavaScript动画
Tutorial:L三步Q搞掂内存泄?
extjs.com/learn/Tutorial:L三步Q搞掂内存泄?/a>
Tutorial:用YUI-EXT创徏Ajax Feed-viewer
extjs.com/learn/Tutorial:用YUI-EXT创徏Ajax_Feed-viewer
Tutorial:使用DomHelper 创徏元素的DOM、HTML片断和模?
extjs.com/learn/Tutorial:使用DomHelper 创徏元素的DOM、HTML片断和模?/a>
Tutorial:EXT设计模式初学?
extjs.com/learn/Tutorial:EXT设计模式初学?/a>
Tutorial:预览 Q增强版的拖攑֒新增的TreePanel
extjs.com/learn/Tutorial:预览_Q增强版的拖攑֒新增的TreePanel
Tutorial:创徏一个可复用的AJAX对话?-一个完成好的例?
extjs.com/learn/Tutorial:创徏一个可复用的AJAX对话?-一个完成好的例?/a>
Tutorial:创徏YUI的Grid
extjs.com/learn/Tutorial:创徏YUI的Grid
Tutorial:Grid 调用q程数据
extjs.com/learn/Tutorial:Grid 调用q程数据
Tutorial:为Yahoo! UI Extensions Grid增加内置的可~辑?
extjs.com/learn/Tutorial:为Yahoo! UI Extensions Grid增加内置的可~辑?/a>
Tutorial:Ext.MasterTemplates 入手
extjs.com/learn/Tutorial:Ext.MasterTemplates 入手
Tutorial:像了解爱Z样了解ExtJs
extjs.com/learn/Tutorial:像了解爱Z样了解ExtJs
Tutorial:JSON和浏览器安全
extjs.com/learn/Tutorial:JSON和浏览器安全
Tutorial:JavaScript的一U模l模?
extjs.com/learn/Tutorial:JavaScript的一U模l模?/a>
Tutorial:关于JavaScript?貌似c(pseudo-classesQ-Q-Q不吐不?
extjs.com/learn/Tutorial:关于JavaScript?貌似c(pseudo-classesQ-Q-Q不吐不?
Tutorial:Application Layout E式開發入門介紹
extjs.com/learn/Tutorial:Application Layout E式開發入門介紹
Tutorial:如何建立一個可以Disable/Editable的Editor gird
extjs.com/learn/Tutorial:如何建立一個可以Disable/Editable的Editor gird



菜毛毛 2009-05-15 15:06 发表评论
]]>
ExtJs制作菜单Dhttp://www.aygfsteel.com/caizh2009/articles/268977.html菜毛毛菜毛毛Tue, 05 May 2009 07:00:00 GMThttp://www.aygfsteel.com/caizh2009/articles/268977.htmlhttp://www.aygfsteel.com/caizh2009/comments/268977.htmlhttp://www.aygfsteel.com/caizh2009/articles/268977.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/268977.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/268977.html阅读全文

菜毛毛 2009-05-05 15:00 发表评论
]]>
ExtJs 的进度的实现Q{Q?/title><link>http://www.aygfsteel.com/caizh2009/articles/268976.html</link><dc:creator>菜毛毛</dc:creator><author>菜毛毛</author><pubDate>Tue, 05 May 2009 06:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/caizh2009/articles/268976.html</guid><wfw:comment>http://www.aygfsteel.com/caizh2009/comments/268976.html</wfw:comment><comments>http://www.aygfsteel.com/caizh2009/articles/268976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/caizh2009/comments/commentRss/268976.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/caizh2009/services/trackbacks/268976.html</trackback:ping><description><![CDATA[<div class="wmqeeuq" id="header"> <div class="wmqeeuq" id="HeaderTitle"> <div class="wmqeeuq" id="subTitle"> <a id="AjaxHolder_ctl01_TitleUrl" >ExtJs实现q度条实?很酷Q很?.</a></div> </div> </div> <script type="text/javascript"> //<![cdata[ Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1')); Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90); //]]> </script> <h2> </h2> <div id="wmqeeuq" class="post"><style type="text/css"> <!-- .style4 {color: #660033} .style5 {color: #660000} --> </style> <p>ExtJs 的进度的实现Q您可以<a >点这?/a>下蝲本实例代码,</p> <p><strong>代码详解Q?/strong></p> <div class="wmqeeuq" id="div1" style="border: 1px dotted green; background-color: #cccccc;"> <pre> var pbar1; <span id="wmqeeuq" class="style5">//定义一个变量用于进度条对象</span><br /> var btn1; <span id="wmqeeuq" class="style4">//定义一个变量用于进按钮对象</span><br /> Ext.onReady(function(){<br /> pbar1=new Ext.ProgressBar({ <span id="wmqeeuq" class="style5">//实例化进度条</span><br /> renderTo:"div1", <span id="wmqeeuq" class="style5">//q度条呈现的一个DIV</span><br /> width:800, <span id="wmqeeuq" class="style5">//q度条的宽度</span><br /> text:"单击按钮开?.." <span id="wmqeeuq" class="style5">//在进度条里的初始文本</span><br /> });<br /> btn1=Ext.get("btn1"); <span id="wmqeeuq" class="style5">//按钮对象</span><br /> btn1.on("click",f1); <span id="wmqeeuq" class="style5">//按钮事gQ单L调用f1()函数</span><br /> });<br /> var i=0; <span id="wmqeeuq" class="style5">//初始化一个变量ؓ0Q下面会用到?/span><br /> function f1(){<br /> i++; //让i?<br /> pbar1.updateProgress(i/100.0); <span id="wmqeeuq" class="style5">//让进度条更新到指定的q度。这个值是0-1之间的数Q我让i/100.0,以让它的l果是一个小?/span><br /> pbar1.updateText("q度:"+i+"%"); <span id="wmqeeuq" class="style5">//q度条显C的文本</span><br /> if(i==100){ <span id="wmqeeuq" class="style5">//当i==100的时候让按钮状态可以用,q让i=1Q再让进度条停止 </span><br /> document.getElementById("btn1").disabled=false;<br /> i=0;<br /> clearInterval(x);<br /> }<br /> document.getElementById("btn1").disabled=true; <span id="wmqeeuq" class="style5">//让按钮的状态ؓ不可?/span><br /> setTimeout("f1()",50);<span id="wmqeeuq" class="style5">//用setTimeout函数递归调用f1()函数Q以辑ֈq度条一直跑的效?/span><br /> }<br /> <span id="wmqeeuq" class="style5">//*****************q度条实?*********************//</span><br /> var pbar2;<span id="wmqeeuq" class="style5">//定义一个变量用于进度条对象</span><br /> var btn2;<span id="wmqeeuq" class="style5">//定义一个变量用于进按钮对象</span><br /> Ext.onReady(function(){<br /> pbar2 = new Ext.ProgressBar({ <span id="wmqeeuq" class="style5">//实例化进度条</span><br /> renderTo:"div2", <span id="wmqeeuq" class="style5">//q度条呈现的一个DIV</span><br /> width:600, <span id="wmqeeuq" class="style5">//q度条的宽度</span><br /> text:"单击按钮开?.." <span id="wmqeeuq" class="style5">//在进度条里的初始文本</span><br /> });<br /> btn2=Ext.get("btn2"); <span id="wmqeeuq" class="style5">//按钮对象</span><br /> btn2.on("click",function(){<span id="wmqeeuq" class="style5">//按钮事gQ单L执行funciton()</span><br /> Runner.run(pbar2,btn2,10,function(){ <span id="wmqeeuq" class="style5"> //Runner是在下面定义。Runner.runҎ参数(q度条对象,按钮对象Q进度大:可以自由讑֮Q进度条完成时执行的行数Q如果不做Q何事情可以填null)</span><br /> Ext.Msg.alert("Information","q度条已l加载完?....."); <span id="wmqeeuq" class="style5">//对话?/span><br /> pbar2.reset(); <span id="wmqeeuq" class="style5">//重置q度?/span><br /> pbar2.updateText("单击按钮重新开?.."); <span id="wmqeeuq" class="style5">//更新q度条的文本</span><br /> });<br /> });<br /> });<br /> <span id="wmqeeuq" class="style5">//q个函数是我从Ext官方下蝲的包里的examples里直接拷贝来的,我也懒得ȝIӞ貌似有点复杂 </span><br /> var Runner = function(){<br /> var f = function(v, pbar, btn, count, cb){<br /> return function(){<br /> if(v > count){<br /> btn.dom.disabled = false;<br /> cb();<br /> }else{<br /> if(pbar.id=='pbar4'){<br /> //give this one a different count style for fun<br /> var i = v/count;<br /> pbar.updateProgress(i, Math.round(100*i)+'% completed...');<br /> }else{<br /> pbar.updateProgress(v/count, 'Loading item ' + v + ' of '+count+'...');<br /> }<br /> }<br /> };<br /> };<br /> return {<br /> run : function(pbar, btn, count, cb){<br /> btn.dom.disabled = true;<br /> var ms = 5000/count;<br /> for(var i = 1; i < (count+2); i++){<br /> setTimeout(f(i, pbar, btn, count, cb), i*ms);<br /> }<br /> }<br /> }<br /> }();<br /> <span id="wmqeeuq" class="style5">//***********q度条实?**************//</span><br /> var pbar3;<span id="wmqeeuq" class="style5">//定义一个变量用于进度条对象</span><br /> var btn3;<span id="wmqeeuq" class="style5">//定义一个变量用于进按钮对象</span><br /> Ext.onReady(function(){<br /> pbar3 = new Ext.ProgressBar({ <span id="wmqeeuq" class="style5">//实例化进度条</span><br /> renderTo:"div3", <span id="wmqeeuq" class="style5">//q度条呈现的一个DIV</span><br /> width:300, <span id="wmqeeuq" class="style5">//q度条的宽度</span><br /> text:"单击按钮开?.." <span id="wmqeeuq" class="style5">//在进度条里的初始文本</span><br /> });<br /> btn3=Ext.get("btn3"); <span id="wmqeeuq" class="style5">//按钮对象</span><br /> btn3.on("click",function(){ <span id="wmqeeuq" class="style5">//按钮单击事g</span><br /> btn3.dom.disabled=true; <span id="wmqeeuq" class="style5">//把按钮设|ؓ不可用状?/span><br /> pbar3.updateText("正在更新..."); <span id="wmqeeuq" class="style5">//更新q度条的文本信息</span><br /> pbar3.wait({ <span id="wmqeeuq" class="style5">//开始执行进度条</span><br /> interval:100, <span id="wmqeeuq" class="style5">//每次q度的时间间?/span><br /> duration:5000, <span id="wmqeeuq" class="style5">//q度条跑动的持箋旉</span><br /> increment:50, <span id="wmqeeuq" class="style5">//q度条的增量Q这个D的越大,q度条跑的越慢,不能于1Q如果小?Q进度条会跑?/span><br /> fn:function(){ <span id="wmqeeuq" class="style5">//q度条完成时执行的函敎ͼ也可设ؓnulll</span><br /> btn3.dom.disabled=false;<span id="wmqeeuq" class="style5">//把按钮设|ؓ可用状?/span><br /> pbar3.updateText("更新完成..单击按钮重新开?..");<span id="wmqeeuq" class="style5">//更新q度条的文本信息</span><br /> }<br /> });<br /> });<br /> });<br /> </pre> </div> </div> <img src ="http://www.aygfsteel.com/caizh2009/aggbug/268976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/caizh2009/" target="_blank">菜毛毛</a> 2009-05-05 14:58 <a href="http://www.aygfsteel.com/caizh2009/articles/268976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext布局cȝ介绍与?转黄灯桥的专? http://www.aygfsteel.com/caizh2009/articles/268975.html菜毛毛菜毛毛Tue, 05 May 2009 06:54:00 GMThttp://www.aygfsteel.com/caizh2009/articles/268975.htmlhttp://www.aygfsteel.com/caizh2009/comments/268975.htmlhttp://www.aygfsteel.com/caizh2009/articles/268975.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/268975.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/268975.html阅读全文

菜毛毛 2009-05-05 14:54 发表评论
]]>
ExtJs学习入门--之HELLOWORLDhttp://www.aygfsteel.com/caizh2009/articles/268970.html菜毛毛菜毛毛Tue, 05 May 2009 06:43:00 GMThttp://www.aygfsteel.com/caizh2009/articles/268970.htmlhttp://www.aygfsteel.com/caizh2009/comments/268970.htmlhttp://www.aygfsteel.com/caizh2009/articles/268970.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/268970.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/268970.html

ExtJs学习入门

Posted on 2009-05-05 14:37 菜毛毛 阅读(0) 评论(0)  ~辑  收藏

ExtJs?/span>Q?span lang="EN-US">
ExtJS是一个用javascript写的Q主要用于创建前端用L面,使一个与后台技术无关的前端ajax框架。因此,
可以?span lang="EN-US">ExtJs用在.Net Java {各U开发语a开发的应用中?/p>


获得ExtJSQ?span lang="EN-US">
ExtJs开源框架可以在官方|站上下载,|址Q?span lang="EN-US">http//extjs.com/download
解压出来的文件有Q?span lang="EN-US">
adapter: 负责里面提供第三方底层?span lang="EN-US">(包括Ext自带的底层库)映射?span lang="EN-US">Ext所支持的底层库?span lang="EN-US">
build: 压羃后的ext全部源码Q里面分cd放)?span lang="EN-US">
docsQ?span lang="EN-US">extJS API?span lang="EN-US">
exmaples:提供使用ExtJs技术做出的事?span lang="EN-US">.
resources:Ext UI资源文g目录,?span lang="EN-US">Css 囄文g都存攑֜q里?span lang="EN-US">.
Ext-all-debug.js:无压~的Ext全部的源?span lang="EN-US">(用于调式).
ext-core.js:
压羃后的Ext的核心组?span lang="EN-US">,包括sources/core下的所有类.
ext-core-debug.js:
无压~?span lang="EN-US">Ext的核心组?span lang="EN-US">,包括source/core下的所有类.

~写ExtJsE序必备?/span>:
ext-all.js |--
核心文gQ包含了ext的所有功?/span>
adapter/ext/ext-base.js | --
基础?/span>
build/locale/ext-lang-zh_CN.js |
中文译
resources |
包含css样式和图?/span>

W一?span lang="EN-US">HelloWorldE序

//在自己徏的工E里导入必须的包
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css">
<script type="text/javascript" src="adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="examples.js"></script>
<script>
Ext.onReady( //初始化页面时执行
function()
{
Ext.MessageBox.alert('hello world','Hello ExtJs');
}
);
</script


菜毛毛 2009-05-05 14:43 发表评论
]]> վ֩ģ壺 ̫ԭ| | üɽ| ˳| Ʊ| Դ| | | ¯| ɽ| ¡| | Ϫ| | ˮ| | ؼ| ض| | | | γ| | | | | | | | Ͻ| ɽ| п| ɽ| Է| | | | ̨| ̨| ˻| |