﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小菜毛毛技术分享-文章分类-EXTJS</title><link>http://www.blogjava.net/caizh2009/category/39392.html</link><description>与大家共同成长</description><language>zh-cn</language><lastBuildDate>Wed, 24 Jun 2009 12:27:11 GMT</lastBuildDate><pubDate>Wed, 24 Jun 2009 12:27:11 GMT</pubDate><ttl>60</ttl><item><title>EXT 项目例子</title><link>http://www.blogjava.net/caizh2009/articles/283910.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Wed, 24 Jun 2009 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/283910.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/283910.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/283910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/283910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/283910.html</trackback:ping><description><![CDATA[<p align="center">&nbsp;</p>
<div>
<p>商贸通是集采购、销售、库存管理于一体，采用etmvc和extjs开发的一套管理程序。</p>
<p>演示地址：<a href="http://www.etmvc.cn/trade" target="_blank">http://www.etmvc.cn/trade</a></p>
<p>系统前端采用iframe的形式分隔各个功能模块，特点是编写控制JS代码简单，缺点也是显而易见的。</p>
<p>关于编写单页面的extjs程序，请见另一个案例的<a href="http://www.etmvc.cn/demo/show/13">进销存</a>系统演示。</p>
<p><img alt="" src="http://www.etmvc.cn/article/showImage/57" /></p>
<p>运行环境：JDK6, TOMCAT6, MYSQL5。</p>
<p>数据库名：trade，登录帐号密码：root/soft123456。</p>
<p>系统登录时帐号密码：admin/admin。</p>
<p><br />
</p>
</div>
<div style="border-right: #ccc 1px solid; padding-right: 10px; border-top: #ccc 1px solid; padding-left: 10px; padding-bottom: 20px; margin: 10px; border-left: #ccc 1px solid; padding-top: 20px; border-bottom: #ccc 1px solid">
<div><a href="http://www.etmvc.cn/article/download/57">trade.png</a> (174532字节) <br />
下载次数：152 <br />
<br />
</div>
<div><a href="http://www.etmvc.cn/article/download/60">trade.war</a> (3952992字节) <br />
下载次数：254 <br />
<br />
</div>
<div><a href="http://www.etmvc.cn/article/download/61">trade.rar</a> (1380466字节) <br />
下载次数：293 <br />
<br />
</div>
<div><a href="http://www.etmvc.cn/article/download/62">trade.sql</a> (44400字节) <br />
下载次数：165 <br />
</div>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/283910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-06-24 11:58 <a href="http://www.blogjava.net/caizh2009/articles/283910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《轻松搞定Extjs》顺利发布 (转)</title><link>http://www.blogjava.net/caizh2009/articles/282290.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Mon, 15 Jun 2009 04:25:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/282290.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/282290.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/282290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/282290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/282290.html</trackback:ping><description><![CDATA[<h2><a id="viewpost1_TitleUrl" href="http://www.blogjava.net/lzhidj/archive/2009/06/14/282097.html">《轻松搞定Extjs》顺利发布</a> </h2>
<div>《转载》<br />
<br />
PDF下载地址：<a title="下载点击这里" href="http://www.rayfile.com/files/5bf8e291-58e4-11de-a2ac-0019d11a795f/">下载点击这里</a><br />
<br />
下面是书籍目录：<br />
<meta content="Word.Document" name="ProgId" />
<meta content="Microsoft Word 11" name="Generator" />
<meta content="Microsoft Word 11" name="Originator" />
<link href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" rel="File-List" />
<style>
<!-- /* Font Definitions */
&#64;font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
&#64;font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
&#64;font-face
{font-family:黑体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
&#64;font-face
{font-family:""&#64;宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
&#64;font-face
{font-family:""&#64;黑体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Times New Roman";}
h1
{
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
line-height:240%;
page-break-after:avoid;
font-size:22.0pt;
font-family:"Times New Roman";}
h2
{
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
line-height:172%;
page-break-after:avoid;
font-size:16.0pt;
font-family:黑体;}
h3
{
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:0cm;
text-align:justify;
text-justify:inter-ideograph;
line-height:172%;
page-break-after:avoid;
font-size:16.0pt;
font-family:宋体;
mso-hansi-font-family:"Times New Roman";}
p.MsoToc1, li.MsoToc1, div.MsoToc1
{
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Times New Roman";}
p.MsoToc2, li.MsoToc2, div.MsoToc2
{
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:21.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Times New Roman";}
p.MsoToc3, li.MsoToc3, div.MsoToc3
{
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Times New Roman";}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{margin:0cm;
margin-bottom:.0001pt;
text-align:center;
tab-stops:center 207.65pt right 415.3pt;
layout-grid-mode:char;
border:none;
padding:0cm;
font-size:9.0pt;
font-family:"Times New Roman";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{margin:0cm;
margin-bottom:.0001pt;
tab-stops:center 207.65pt right 415.3pt;
layout-grid-mode:char;
font-size:9.0pt;
font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;
text-underline:single;}
p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
background:navy;
font-size:10.5pt;
font-family:"Times New Roman";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:9.0pt;
font-family:"Times New Roman";}
p.05, li.05, div.05
{mso-style-name:"样式 方框": "(单实线 自动设置  0".5 磅 行宽")";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:27.0pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
border:none;
padding:0cm;
font-size:10.5pt;
font-family:"Times New Roman";}
p.1, li.1, div.1
{
mso-style-parent:"标题 1";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:0cm;
text-align:center;
line-height:240%;
page-break-after:avoid;
font-size:22.0pt;
font-family:宋体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
font-weight:bold;}
/* Page Definitions */
&#64;page
{}
&#64;page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
/* List Definitions */
&#64;list l0
{}
&#64;list l0:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l0:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l1
{}
&#64;list l1:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;}
&#64;list l1:level2
{
mso-level-text:"%2")";
margin-left:62.75pt;
text-indent:-21.0pt;}
&#64;list l1:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;}
&#64;list l1:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;}
&#64;list l1:level5
{
mso-level-text:"%5")";
margin-left:125.75pt;
text-indent:-21.0pt;}
&#64;list l1:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;}
&#64;list l1:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;}
&#64;list l1:level8
{
mso-level-text:"%8")";
margin-left:188.75pt;
text-indent:-21.0pt;}
&#64;list l1:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;}
&#64;list l2
{}
&#64;list l2:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l2:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3
{}
&#64;list l3:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l3:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l4
{}
&#64;list l4:level1
{
margin-left:63.05pt;
text-indent:-21.0pt;}
&#64;list l4:level2
{
mso-level-text:"%2")";
margin-left:84.05pt;
text-indent:-21.0pt;}
&#64;list l4:level3
{
margin-left:105.05pt;
text-indent:-21.0pt;}
&#64;list l4:level4
{
margin-left:126.05pt;
text-indent:-21.0pt;}
&#64;list l4:level5
{
mso-level-text:"%5")";
margin-left:147.05pt;
text-indent:-21.0pt;}
&#64;list l4:level6
{
margin-left:168.05pt;
text-indent:-21.0pt;}
&#64;list l4:level7
{
margin-left:189.05pt;
text-indent:-21.0pt;}
&#64;list l4:level8
{
mso-level-text:"%8")";
margin-left:210.05pt;
text-indent:-21.0pt;}
&#64;list l4:level9
{
margin-left:231.05pt;
text-indent:-21.0pt;}
&#64;list l5
{}
&#64;list l5:level1
{
margin-left:39.0pt;
text-indent:-18.0pt;}
&#64;list l5:level2
{
mso-level-text:"%2")";
margin-left:63.0pt;
text-indent:-21.0pt;}
&#64;list l5:level3
{
margin-left:84.0pt;
text-indent:-21.0pt;}
&#64;list l5:level4
{
margin-left:105.0pt;
text-indent:-21.0pt;}
&#64;list l5:level5
{
mso-level-text:"%5")";
margin-left:126.0pt;
text-indent:-21.0pt;}
&#64;list l5:level6
{
margin-left:147.0pt;
text-indent:-21.0pt;}
&#64;list l5:level7
{
margin-left:168.0pt;
text-indent:-21.0pt;}
&#64;list l5:level8
{
mso-level-text:"%8")";
margin-left:189.0pt;
text-indent:-21.0pt;}
&#64;list l5:level9
{
margin-left:210.0pt;
text-indent:-21.0pt;}
&#64;list l6
{}
&#64;list l6:level1
{
margin-left:63.05pt;
text-indent:-21.0pt;}
&#64;list l6:level2
{
margin-left:84.05pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l6:level3
{
margin-left:105.05pt;
text-indent:-21.0pt;}
&#64;list l6:level4
{
margin-left:126.05pt;
text-indent:-21.0pt;}
&#64;list l6:level5
{
mso-level-text:"%5")";
margin-left:147.05pt;
text-indent:-21.0pt;}
&#64;list l6:level6
{
margin-left:168.05pt;
text-indent:-21.0pt;}
&#64;list l6:level7
{
margin-left:189.05pt;
text-indent:-21.0pt;}
&#64;list l6:level8
{
mso-level-text:"%8")";
margin-left:210.05pt;
text-indent:-21.0pt;}
&#64;list l6:level9
{
margin-left:231.05pt;
text-indent:-21.0pt;}
&#64;list l7
{}
&#64;list l7:level1
{
margin-left:0cm;
text-indent:0cm;}
&#64;list l8
{}
&#64;list l8:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l8:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9
{}
&#64;list l9:level1
{
margin-left:42.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level2
{
margin-left:63.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level3
{
margin-left:84.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level4
{
margin-left:105.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level5
{
margin-left:126.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level6
{
margin-left:147.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level7
{
margin-left:168.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level8
{
margin-left:189.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l9:level9
{
margin-left:210.0pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10
{}
&#64;list l10:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l10:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l11
{}
&#64;list l11:level1
{
margin-left:39.0pt;
text-indent:-18.0pt;}
&#64;list l11:level2
{
mso-level-text:"%2")";
margin-left:63.0pt;
text-indent:-21.0pt;}
&#64;list l11:level3
{
margin-left:84.0pt;
text-indent:-21.0pt;}
&#64;list l11:level4
{
margin-left:105.0pt;
text-indent:-21.0pt;}
&#64;list l11:level5
{
mso-level-text:"%5")";
margin-left:126.0pt;
text-indent:-21.0pt;}
&#64;list l11:level6
{
margin-left:147.0pt;
text-indent:-21.0pt;}
&#64;list l11:level7
{
margin-left:168.0pt;
text-indent:-21.0pt;}
&#64;list l11:level8
{
mso-level-text:"%8")";
margin-left:189.0pt;
text-indent:-21.0pt;}
&#64;list l11:level9
{
margin-left:210.0pt;
text-indent:-21.0pt;}
&#64;list l12
{}
&#64;list l12:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l12:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l13
{}
&#64;list l13:level1
{
margin-left:39.0pt;
text-indent:-18.0pt;}
&#64;list l13:level2
{
mso-level-text:"%2")";
margin-left:63.0pt;
text-indent:-21.0pt;}
&#64;list l13:level3
{
margin-left:84.0pt;
text-indent:-21.0pt;}
&#64;list l13:level4
{
margin-left:105.0pt;
text-indent:-21.0pt;}
&#64;list l13:level5
{
mso-level-text:"%5")";
margin-left:126.0pt;
text-indent:-21.0pt;}
&#64;list l13:level6
{
margin-left:147.0pt;
text-indent:-21.0pt;}
&#64;list l13:level7
{
margin-left:168.0pt;
text-indent:-21.0pt;}
&#64;list l13:level8
{
mso-level-text:"%8")";
margin-left:189.0pt;
text-indent:-21.0pt;}
&#64;list l13:level9
{
margin-left:210.0pt;
text-indent:-21.0pt;}
&#64;list l14
{}
&#64;list l14:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l14:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15
{}
&#64;list l15:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level2
{
margin-left:62.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level5
{
margin-left:125.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level8
{
margin-left:188.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l15:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l16
{}
&#64;list l16:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;}
&#64;list l16:level2
{
mso-level-text:"%2")";
margin-left:62.75pt;
text-indent:-21.0pt;}
&#64;list l16:level3
{
margin-left:83.75pt;
text-indent:-21.0pt;}
&#64;list l16:level4
{
margin-left:104.75pt;
text-indent:-21.0pt;}
&#64;list l16:level5
{
mso-level-text:"%5")";
margin-left:125.75pt;
text-indent:-21.0pt;}
&#64;list l16:level6
{
margin-left:146.75pt;
text-indent:-21.0pt;}
&#64;list l16:level7
{
margin-left:167.75pt;
text-indent:-21.0pt;}
&#64;list l16:level8
{
mso-level-text:"%8")";
margin-left:188.75pt;
text-indent:-21.0pt;}
&#64;list l16:level9
{
margin-left:209.75pt;
text-indent:-21.0pt;}
&#64;list l17
{}
&#64;list l17:level1
{
margin-left:41.75pt;
text-indent:-21.0pt;
font-family:Wingdings;}
&#64;list l18
{}
&#64;list l18:level1
{mso-level-text:"%1")";
margin-left:41.75pt;
text-indent:-21.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
<p><a href="http://www.blogjava.net/lzhidj/archive/2009/06/14/282097.html#_Toc232701167" aiotitle="目 录 1 第一章：序 6 第二章：准备与资源 9 一、下载 9 二、拦路虎 9 三、布署环境 11 四、SpketIDE 12 五、资源 16 六、小结 16 第三章：Ext OOP基础 17 一、javascript类的定义 17 二、Extjs命名空间的定义 17 三、Extjs OOP 17 四、配置(config)选项 19 五、Ext.apply()和Ext.applyIf() 20 六、小结 21 第四章：消息框 22 一、话说消息框 22 二、最简单的消息框——提示框 23 三、输入框 23 四、确认框 24 五、自定义消息框 24 六、进度条对话框 25 七、让消息框飞出来 26 八、小结 27 第五章：页面与脚本完全分离 28 一、Extjs是脚本的世界 28 二、Ext.onReady事件 28 三、来自Extjs的问候 29 四、让界面动起来 29 五、Ext.Fx类 30 六、Ext.Element类中的动画函数 34 七、小结 35 第六章：元素操作与模板 36 一、重要也不重要的东西 36 二、Ext.DomHelper类 36 三、Ext.XTemplate 38 四、小结 39 第七章：格式化 40 一、用户需要优秀体验的内容 40 二、Ext.util.Format类 40 三、再谈XTemplete 44 四、如果连Format都不能满足XTemplete的需要呢？ 45 五、小结 45 第八章：Extjs组件结构 46 一、Extjs的组件结构远比我们想象的复杂 46 二、组件分类 47 三、组件的生命周期 48 四、组件渲染方法render 50 五、小结 52 第九章：按钮与日期选择器 53 一、开始组件学习之旅 53 二、被设计得面目全非的按钮 53 三、日期选择器Ext.DatePicker 55 四、小结 56 第十章：数据与ComboBox 57 一、数据在这里是动词 57 二、Ext.data.DataProxy类 57 三、Ext.data.DataReader类 58 四、Ext.data.Store类 59 五、下拉列表框 60 六、得到下拉列表框的值 62 七、源代码 63 八、小结 64 第十一章：Ajax与ComboBox 65 一、Ajax 65 二、Ext.Ajax类 65 三、Ajax文件上传 67 四、你来自远方 72 五、小结 73 第十二章：分页与ComboBox 74 一、关于分页 74 二、从Servlet获取当前页数据 74 三、创建ComboBox 76 四、小结 77 第十三章：面板（Panel） 78 一、漂亮的窗格从这里开始 78 二、Ext.Panel类 78 三、小结 83 第十四章：Panel的子类——Window窗口 85 一、概述 85 二、Ext.Window类 85 三、实现Window的最小化功能 87 四、小结 91 第十五章：Panel的子类——FormPanel 93 一、无处不在的表单 93 二、Ext.form.FormPanel类 93 三、提交表单至服务器 97 四、小结 100 第十六章：更多表单组件 102 一、您能说出哪些表单组件呢？ 102 二、表单组件关系图 102 三、组件配置选项介绍 103 四、完整源代码 107 五、小结 112 第十七章：悬停提示与验证 113 一、悬停提示 113 二、悬停提示的用法 114 三、表单组件验证 118 四、小结 120 第十八章：FormPanel布局与初始化 121 一、布局概述 121 二、分割吧！ 121 三、表单初始化 126 四、小结 131 第十九章：叹为观止的表格组件——GridPanel 132 一、表格、表格面板 132 二、列模型与数据 132 三、加强版的列模型 135 四、小结 138 第二十章：行模型与Grid视图 139 一、行选择模型 139 二、Grid视图 143 三、小结 147 第二十一章：GridPanel分页 148 一、跑跑题——JSON-LIB 148 二、分页工具栏 154 三、分页 154 四、小结 157 第二十二章：GridPanel扩展 158 一、学会自学吧，朋友 158 二、带摘要的GridPanel 158 三、RowExpander 162 四、分组GridPanel 165 五、将带摘要的GridPanel和分组GridPanel合二为一 168 六、小结 171 第二十三章：可编辑的GridPanel——EditGridPanel 172 一、EditGridPanel 172 二、编辑订单数据 173 三、保存修改的数据至服务器 178 四、处理请求 179 五、完整源代码 181 六、验证 186 七、替换选择模型 187 八、小结 187 第二十四章：树与选择模型 188 一、树——TreePanel 188 二、创建简单的TreePanel 189 三、选择模型 192 四、MultiSelectionModel 195 五、带复选框的节点 195 六、小结 199 第二十五章：动态操作树节点 200 一、概述 200 二、基本操作 201 三、事件 203 四、小结 204 第二十六章：远程获取节点数据 205 一、 概述 205 二、异步加载解析 206 三、小结 212 第二十七章：选项卡面板——Ext.TabPanel 214 一、关于魅族和M8 214 二、TabPanel概述 214 三、TabPanel标签操作 216 四、标签弹出菜单 217 五、小结 220 第二十八章：Viewport类 221 一、概述 221 二、Viewport的基本使用 221 三、小结 226 第二十九章：综合项目 227 一、概述 227 二、数据库设计 228 三、持久层封装 229 四、DAO 235 五、业务层 238 六、控制器Action 242 七、Spring配置文件 249 八、主界面 251 九、添加新员工 253 十、员工信息维护 255 十一、效果图 261 十二、小结 262">目&nbsp; 录&nbsp;&nbsp; &nbsp;1<br aiotitle="" />
第一章：序&nbsp;&nbsp; &nbsp;6<br aiotitle="" />
第二章：准备与资源&nbsp;&nbsp; &nbsp;9<br aiotitle="" />
一、下载&nbsp;&nbsp; &nbsp;9<br aiotitle="" />
二、拦路虎&nbsp;&nbsp; &nbsp;9<br aiotitle="" />
三、布署环境&nbsp;&nbsp; &nbsp;11<br aiotitle="" />
四、SpketIDE&nbsp;&nbsp; &nbsp;12<br aiotitle="" />
五、资源&nbsp;&nbsp; &nbsp;16<br aiotitle="" />
六、小结&nbsp;&nbsp; &nbsp;16<br aiotitle="" />
第三章：Ext OOP基础&nbsp;&nbsp; &nbsp;17<br aiotitle="" />
一、javascript类的定义&nbsp;&nbsp; &nbsp;17<br aiotitle="" />
二、Extjs命名空间的定义&nbsp;&nbsp; &nbsp;17<br aiotitle="" />
三、Extjs OOP&nbsp;&nbsp; &nbsp;17<br aiotitle="" />
四、配置(config)选项&nbsp;&nbsp; &nbsp;19<br aiotitle="" />
五、Ext.apply()和Ext.applyIf()&nbsp;&nbsp; &nbsp;20<br aiotitle="" />
六、小结&nbsp;&nbsp; &nbsp;21<br aiotitle="" />
第四章：消息框&nbsp;&nbsp; &nbsp;22<br aiotitle="" />
一、话说消息框&nbsp;&nbsp; &nbsp;22<br aiotitle="" />
二、最简单的消息框——提示框&nbsp;&nbsp; &nbsp;23<br aiotitle="" />
三、输入框&nbsp;&nbsp; &nbsp;23<br aiotitle="" />
四、确认框&nbsp;&nbsp; &nbsp;24<br aiotitle="" />
五、自定义消息框&nbsp;&nbsp; &nbsp;24<br aiotitle="" />
六、进度条对话框&nbsp;&nbsp; &nbsp;25<br aiotitle="" />
七、让消息框飞出来&nbsp;&nbsp; &nbsp;26<br aiotitle="" />
八、小结&nbsp;&nbsp; &nbsp;27<br aiotitle="" />
第五章：页面与脚本完全分离&nbsp;&nbsp; &nbsp;28<br aiotitle="" />
一、Extjs是脚本的世界&nbsp;&nbsp; &nbsp;28<br aiotitle="" />
二、Ext.onReady事件&nbsp;&nbsp; &nbsp;28<br aiotitle="" />
三、来自Extjs的问候&nbsp;&nbsp; &nbsp;29<br aiotitle="" />
四、让界面动起来&nbsp;&nbsp; &nbsp;29<br aiotitle="" />
五、Ext.Fx类&nbsp;&nbsp; &nbsp;30<br aiotitle="" />
六、Ext.Element类中的动画函数&nbsp;&nbsp; &nbsp;34<br aiotitle="" />
七、小结&nbsp;&nbsp; &nbsp;35<br aiotitle="" />
第六章：元素操作与模板&nbsp;&nbsp; &nbsp;36<br aiotitle="" />
一、重要也不重要的东西&nbsp;&nbsp; &nbsp;36<br aiotitle="" />
二、Ext.DomHelper类&nbsp;&nbsp; &nbsp;36<br aiotitle="" />
三、Ext.XTemplate&nbsp;&nbsp; &nbsp;38<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;39<br aiotitle="" />
第七章：格式化&nbsp;&nbsp; &nbsp;40<br aiotitle="" />
一、用户需要优秀体验的内容&nbsp;&nbsp; &nbsp;40<br aiotitle="" />
二、Ext.util.Format类&nbsp;&nbsp; &nbsp;40<br aiotitle="" />
三、再谈XTemplete&nbsp;&nbsp; &nbsp;44<br aiotitle="" />
四、如果连Format都不能满足XTemplete的需要呢？&nbsp;&nbsp; &nbsp;45<br aiotitle="" />
五、小结&nbsp;&nbsp; &nbsp;45<br aiotitle="" />
第八章：Extjs组件结构&nbsp;&nbsp; &nbsp;46<br aiotitle="" />
一、Extjs的组件结构远比我们想象的复杂&nbsp;&nbsp; &nbsp;46<br aiotitle="" />
二、组件分类&nbsp;&nbsp; &nbsp;47<br aiotitle="" />
三、组件的生命周期&nbsp;&nbsp; &nbsp;48<br aiotitle="" />
四、组件渲染方法render&nbsp;&nbsp; &nbsp;50<br aiotitle="" />
五、小结&nbsp;&nbsp; &nbsp;52<br aiotitle="" />
第九章：按钮与日期选择器&nbsp;&nbsp; &nbsp;53<br aiotitle="" />
一、开始组件学习之旅&nbsp;&nbsp; &nbsp;53<br aiotitle="" />
二、被设计得面目全非的按钮&nbsp;&nbsp; &nbsp;53<br aiotitle="" />
三、日期选择器Ext.DatePicker&nbsp;&nbsp; &nbsp;55<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;56<br aiotitle="" />
第十章：数据与ComboBox&nbsp;&nbsp; &nbsp;57<br aiotitle="" />
一、数据在这里是动词&nbsp;&nbsp; &nbsp;57<br aiotitle="" />
二、Ext.data.DataProxy类&nbsp;&nbsp; &nbsp;57<br aiotitle="" />
三、Ext.data.DataReader类&nbsp;&nbsp; &nbsp;58<br aiotitle="" />
四、Ext.data.Store类&nbsp;&nbsp; &nbsp;59<br aiotitle="" />
五、下拉列表框&nbsp;&nbsp; &nbsp;60<br aiotitle="" />
六、得到下拉列表框的值&nbsp;&nbsp; &nbsp;62<br aiotitle="" />
七、源代码&nbsp;&nbsp; &nbsp;63<br aiotitle="" />
八、小结&nbsp;&nbsp; &nbsp;64<br aiotitle="" />
第十一章：Ajax与ComboBox&nbsp;&nbsp; &nbsp;65<br aiotitle="" />
一、Ajax&nbsp;&nbsp; &nbsp;65<br aiotitle="" />
二、Ext.Ajax类&nbsp;&nbsp; &nbsp;65<br aiotitle="" />
三、Ajax文件上传&nbsp;&nbsp; &nbsp;67<br aiotitle="" />
四、你来自远方&nbsp;&nbsp; &nbsp;72<br aiotitle="" />
五、小结&nbsp;&nbsp; &nbsp;73<br aiotitle="" />
第十二章：分页与ComboBox&nbsp;&nbsp; &nbsp;74<br aiotitle="" />
一、关于分页&nbsp;&nbsp; &nbsp;74<br aiotitle="" />
二、从Servlet获取当前页数据&nbsp;&nbsp; &nbsp;74<br aiotitle="" />
三、创建ComboBox&nbsp;&nbsp; &nbsp;76<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;77<br aiotitle="" />
第十三章：面板（Panel）&nbsp;&nbsp; &nbsp;78<br aiotitle="" />
一、漂亮的窗格从这里开始&nbsp;&nbsp; &nbsp;78<br aiotitle="" />
二、Ext.Panel类&nbsp;&nbsp; &nbsp;78<br aiotitle="" />
三、小结&nbsp;&nbsp; &nbsp;83<br aiotitle="" />
第十四章：Panel的子类——Window窗口&nbsp;&nbsp; &nbsp;85<br aiotitle="" />
一、概述&nbsp;&nbsp; &nbsp;85<br aiotitle="" />
二、Ext.Window类&nbsp;&nbsp; &nbsp;85<br aiotitle="" />
三、实现Window的最小化功能&nbsp;&nbsp; &nbsp;87<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;91<br aiotitle="" />
第十五章：Panel的子类——FormPanel&nbsp;&nbsp; &nbsp;93<br aiotitle="" />
一、无处不在的表单&nbsp;&nbsp; &nbsp;93<br aiotitle="" />
二、Ext.form.FormPanel类&nbsp;&nbsp; &nbsp;93<br aiotitle="" />
三、提交表单至服务器&nbsp;&nbsp; &nbsp;97<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;100<br aiotitle="" />
第十六章：更多表单组件&nbsp;&nbsp; &nbsp;102<br aiotitle="" />
一、您能说出哪些表单组件呢？&nbsp;&nbsp; &nbsp;102<br aiotitle="" />
二、表单组件关系图&nbsp;&nbsp; &nbsp;102<br aiotitle="" />
三、组件配置选项介绍&nbsp;&nbsp; &nbsp;103<br aiotitle="" />
四、完整源代码&nbsp;&nbsp; &nbsp;107<br aiotitle="" />
五、小结&nbsp;&nbsp; &nbsp;112<br aiotitle="" />
第十七章：悬停提示与验证&nbsp;&nbsp; &nbsp;113<br aiotitle="" />
一、悬停提示&nbsp;&nbsp; &nbsp;113<br aiotitle="" />
二、悬停提示的用法&nbsp;&nbsp; &nbsp;114<br aiotitle="" />
三、表单组件验证&nbsp;&nbsp; &nbsp;118<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;120<br aiotitle="" />
第十八章：FormPanel布局与初始化&nbsp;&nbsp; &nbsp;121<br aiotitle="" />
一、布局概述&nbsp;&nbsp; &nbsp;121<br aiotitle="" />
二、分割吧！&nbsp;&nbsp; &nbsp;121<br aiotitle="" />
三、表单初始化&nbsp;&nbsp; &nbsp;126<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;131<br aiotitle="" />
第十九章：叹为观止的表格组件——GridPanel&nbsp;&nbsp; &nbsp;132<br aiotitle="" />
一、表格、表格面板&nbsp;&nbsp; &nbsp;132<br aiotitle="" />
二、列模型与数据&nbsp;&nbsp; &nbsp;132<br aiotitle="" />
三、加强版的列模型&nbsp;&nbsp; &nbsp;135<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;138<br aiotitle="" />
第二十章：行模型与Grid视图&nbsp;&nbsp; &nbsp;139<br aiotitle="" />
一、行选择模型&nbsp;&nbsp; &nbsp;139<br aiotitle="" />
二、Grid视图&nbsp;&nbsp; &nbsp;143<br aiotitle="" />
三、小结&nbsp;&nbsp; &nbsp;147<br aiotitle="" />
第二十一章：GridPanel分页&nbsp;&nbsp; &nbsp;148<br aiotitle="" />
一、跑跑题——JSON-LIB&nbsp;&nbsp; &nbsp;148<br aiotitle="" />
二、分页工具栏&nbsp;&nbsp; &nbsp;154<br aiotitle="" />
三、分页&nbsp;&nbsp; &nbsp;154<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;157<br aiotitle="" />
第二十二章：GridPanel扩展&nbsp;&nbsp; &nbsp;158<br aiotitle="" />
一、学会自学吧，朋友&nbsp;&nbsp; &nbsp;158<br aiotitle="" />
二、带摘要的GridPanel&nbsp;&nbsp; &nbsp;158<br aiotitle="" />
三、RowExpander&nbsp;&nbsp; &nbsp;162<br aiotitle="" />
四、分组GridPanel&nbsp;&nbsp; &nbsp;165<br aiotitle="" />
五、将带摘要的GridPanel和分组GridPanel合二为一&nbsp;&nbsp; &nbsp;168<br aiotitle="" />
六、小结&nbsp;&nbsp; &nbsp;171<br aiotitle="" />
第二十三章：可编辑的GridPanel——EditGridPanel&nbsp;&nbsp; &nbsp;172<br aiotitle="" />
一、EditGridPanel&nbsp;&nbsp; &nbsp;172<br aiotitle="" />
二、编辑订单数据&nbsp;&nbsp; &nbsp;173<br aiotitle="" />
三、保存修改的数据至服务器&nbsp;&nbsp; &nbsp;178<br aiotitle="" />
四、处理请求&nbsp;&nbsp; &nbsp;179<br aiotitle="" />
五、完整源代码&nbsp;&nbsp; &nbsp;181<br aiotitle="" />
六、验证&nbsp;&nbsp; &nbsp;186<br aiotitle="" />
七、替换选择模型&nbsp;&nbsp; &nbsp;187<br aiotitle="" />
八、小结&nbsp;&nbsp; &nbsp;187<br aiotitle="" />
第二十四章：树与选择模型&nbsp;&nbsp; &nbsp;188<br aiotitle="" />
一、树——TreePanel&nbsp;&nbsp; &nbsp;188<br aiotitle="" />
二、创建简单的TreePanel&nbsp;&nbsp; &nbsp;189<br aiotitle="" />
三、选择模型&nbsp;&nbsp; &nbsp;192<br aiotitle="" />
四、MultiSelectionModel&nbsp;&nbsp; &nbsp;195<br aiotitle="" />
五、带复选框的节点&nbsp;&nbsp; &nbsp;195<br aiotitle="" />
六、小结&nbsp;&nbsp; &nbsp;199<br aiotitle="" />
第二十五章：动态操作树节点&nbsp;&nbsp; &nbsp;200<br aiotitle="" />
一、概述&nbsp;&nbsp; &nbsp;200<br aiotitle="" />
二、基本操作&nbsp;&nbsp; &nbsp;201<br aiotitle="" />
三、事件&nbsp;&nbsp; &nbsp;203<br aiotitle="" />
四、小结&nbsp;&nbsp; &nbsp;204<br aiotitle="" />
第二十六章：远程获取节点数据&nbsp;&nbsp; &nbsp;205<br aiotitle="" />
一、 概述&nbsp;&nbsp; &nbsp;205<br aiotitle="" />
二、异步加载解析&nbsp;&nbsp; &nbsp;206<br aiotitle="" />
三、小结&nbsp;&nbsp; &nbsp;212<br aiotitle="" />
第二十七章：选项卡面板——Ext.TabPanel&nbsp;&nbsp; &nbsp;214<br aiotitle="" />
一、关于魅族和M8&nbsp;&nbsp; &nbsp;214<br aiotitle="" />
二、TabPanel概述&nbsp;&nbsp; &nbsp;214<br aiotitle="" />
三、TabPanel标签操作&nbsp;&nbsp; &nbsp;216<br aiotitle="" />
四、标签弹出菜单&nbsp;&nbsp; &nbsp;217<br aiotitle="" />
五、小结&nbsp;&nbsp; &nbsp;220<br aiotitle="" />
第二十八章：Viewport类&nbsp;&nbsp; &nbsp;221<br aiotitle="" />
一、概述&nbsp;&nbsp; &nbsp;221<br aiotitle="" />
二、Viewport的基本使用&nbsp;&nbsp; &nbsp;221<br aiotitle="" />
三、小结&nbsp;&nbsp; &nbsp;226<br aiotitle="" />
第二十九章：综合项目&nbsp;&nbsp; &nbsp;227<br aiotitle="" />
一、概述&nbsp;&nbsp; &nbsp;227<br aiotitle="" />
二、数据库设计&nbsp;&nbsp; &nbsp;228<br aiotitle="" />
三、持久层封装&nbsp;&nbsp; &nbsp;229<br aiotitle="" />
四、DAO&nbsp;&nbsp; &nbsp;235<br aiotitle="" />
五、业务层&nbsp;&nbsp; &nbsp;238<br aiotitle="" />
六、控制器Action&nbsp;&nbsp; &nbsp;242<br aiotitle="" />
七、Spring配置文件&nbsp;&nbsp; &nbsp;249<br aiotitle="" />
八、主界面&nbsp;&nbsp; &nbsp;251<br aiotitle="" />
九、添加新员工&nbsp;&nbsp; &nbsp;253<br aiotitle="" />
十、员工信息维护&nbsp;&nbsp; &nbsp;255<br aiotitle="" />
十一、效果图&nbsp;&nbsp; &nbsp;261<br aiotitle="" />
十二、小结&nbsp;&nbsp; &nbsp;262</a></p>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/282290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-06-15 12:25 <a href="http://www.blogjava.net/caizh2009/articles/282290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript的调试利器：Firebug使用详解 </title><link>http://www.blogjava.net/caizh2009/articles/279959.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Thu, 04 Jun 2009 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/279959.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/279959.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/279959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/279959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/279959.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转载自：http://blog.csdn.net/tianxiaode/archive/2007/09/02/1769152.aspx&nbsp;&nbsp; 真的写的很好，我想自己写些，但是自愧没有他的精细，就拿来主义了&nbsp; Javascript的调试，是开发Web应用尤其是AJAX应用很重要的一环，目前对Javascript进行调试的工具很多，我比较喜欢使用的是Firebug。Fi...&nbsp;&nbsp;<a href='http://www.blogjava.net/caizh2009/articles/279959.html'>阅读全文</a><img src ="http://www.blogjava.net/caizh2009/aggbug/279959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-06-04 10:13 <a href="http://www.blogjava.net/caizh2009/articles/279959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tutorial:Javascript中的作用域（scope）是什么?(一)(试用FIREBUG了解)</title><link>http://www.blogjava.net/caizh2009/articles/271258.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Mon, 18 May 2009 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/271258.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/271258.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/271258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/271258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/271258.html</trackback:ping><description><![CDATA[<div id="bd">
<div class="left-column">
<div class="portlet" id="p-personal" style="width: 90%">
<h5>Personal tools</h5>
<div class="pBody">
<ul>
    <li id="pt-login"><a title="You are encouraged to log in, it is not mandatory however. [o]" accesskey="o" href="http://extjs.com/learn/w/index.php?title=Special:Userlogin&amp;returnto=Tutorial:What_is_that_Scope_all_about_(Chinese)">Log in / create account</a>
    <li id="pt-register"><a href="http://extjs.com/user/register">Register</a> </li>
</ul>
</div>
</div>
<div class="portlet" id="p-cactions">
<h5>Views</h5>
<div class="pBody">
<ul>
    <li class="selected" id="ca-nstab-tutorial"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29">Tutorial</a>
    <li class="new" id="ca-talk"><a title="Discussion about the content page [t]" accesskey="t" href="http://extjs.com/learn/w/index.php?title=Tutorial_talk:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit">Discussion</a>
    <li id="ca-edit"><a title="You can edit this page. Please use the preview button before saving. [e]" accesskey="e" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit">Edit</a>
    <li id="ca-history"><a title="Past versions of this page. [h]" accesskey="h" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=history">History</a> </li>
</ul>
</div>
</div>
<div class="learn_content"><a id="top" name="top"></a>
<h1 class="firstHeading">Tutorial:What is that Scope all about (Chinese)</h1>
<div id="bodyContent">
<h3 id="siteSub">From Learn About the Ext JavaScript Library</h3>
<div id="contentSub"></div>
<div id="jump-to-nav">Jump to: <a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#column-one">navigation</a>, <a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#searchInput">search</a></div>
<!-- start content -->
<div class="tutorialSummary">
<table>
    <tbody>
        <tr>
            <td><strong>Summary:</strong> 本教程讲解了Javascript中的作用域（scope）几个要点和变量可见度（variables visibility）等的问题。 </td>
        </tr>
        <tr>
            <td><strong>Author:</strong> Jozef Sakalos(译者：<a class="external text" title="http://extjs.com/forum/member.php?u=572" href="http://extjs.com/forum/member.php?u=572" rel="nofollow">Frank Cheung</a>) </td>
        </tr>
        <tr>
            <td><strong>Published:</strong> August 27, 2007 </td>
        </tr>
        <tr>
            <td><strong>Ext Version:</strong> 1.1+ / 2.0+ </td>
        </tr>
        <tr>
            <td><strong>Languages:</strong> <span style="white-space: nowrap"><img alt="en.png" src="http://extjs.com/modules/i18n/flags/en.png" /> <a title="Tutorial:What is that Scope all about" href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about">English</a></span> <span style="white-space: nowrap"><img alt="cn.png" src="http://extjs.com/modules/i18n/flags/cn.png" /> <strong class="selflink">Chinese</strong></span> <span style="white-space: nowrap"><img alt="kr.png" src="http://extjs.com/modules/i18n/flags/kr.png" /> <a title="Tutorial:What is that Scope all about (Korean)" href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Korean%29">Korean</a></span> <span style="white-space: nowrap"><img alt="tr.png" src="http://extjs.com/modules/i18n/flags/tr.png" /> <a title="Tutorial:What is that Scope all about (Turkish)" href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Turkish%29">Turkish</a></span> <span style="white-space: nowrap"><img alt="it.png" src="http://extjs.com/modules/i18n/flags/it.png" /> <a title="Tutorial:What is that Scope all about (Italian)" href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Italian%29">Italian</a></span> </td>
        </tr>
    </tbody>
</table>
</div>
<table class="toc" id="toc" summary="Contents">
    <tbody>
        <tr>
            <td>
            <div id="toctitle">
            <h2>Contents</h2>
            <span class="toctoggle">[<a class="internal" id="togglelink" href="javascript:toggleToc()">hide</a>]</span></div>
            <ul>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#.E4.BA.8B.E5.89.8D.E5.87.86.E5.A4.87"><span class="tocnumber">1</span> <span class="toctext">事前准备</span></a>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#.E5.AE.9A.E4.B9.89"><span class="tocnumber">2</span> <span class="toctext">定义</span></a>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#.E6.AD.A3.E5.BC.8F.E5.BC.80.E5.A7.8B"><span class="tocnumber">3</span> <span class="toctext">正式开始</span></a>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#window.E5.AF.B9.E8.B1.A1"><span class="tocnumber">4</span> <span class="toctext">window对象</span></a>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#.E7.90.86.E8.A7.A3.E4.BD.9C.E7.94.A8.E5.9F.9F"><span class="tocnumber">5</span> <span class="toctext">理解作用域</span></a>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29#.E5.8F.98.E9.87.8F.E7.9A.84.E5.8F.AF.E8.A7.81.E5.BA.A6"><span class="tocnumber">6</span> <span class="toctext">变量的可见度</span></a> </li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script><a name=".E4.BA.8B.E5.89.8D.E5.87.86.E5.A4.87"></a>
<h3><span class="editsection"><a title="Edit section: 事前准备" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit&amp;section=1"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">事前准备</span></h3>
<p>学习本教程的最佳方法是随手准备好<a class="external text" title="http://firefox.com" href="http://firefox.com/" rel="nofollow">Firefox</a>中的工具<a class="external text" title="http://getfirebug.com" href="http://getfirebug.com/" rel="nofollow">Firebug</a>。这样使得您可以即刻测试教程的例子。 </p>
<p>如果机子上还没有FireFox和FireBug，就应该尽快安装一套来用。</p>
<a name=".E5.AE.9A.E4.B9.89"></a>
<h3><span class="editsection"><a title="Edit section: 定义" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit&amp;section=2"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">定义</span></h3>
<p><strong>作用域scope</strong><br />
1.（名词）某样事物执行、操作、拥有控制权的那么一个区域 <a class="external autonumber" title="http://www.tfd.com/scope" href="http://www.tfd.com/scope" rel="nofollow">[1]</a><br />
2. （名词） 编写程序时，程序之中变量的可见度；例如，一个函数能否使用另外一个函数所创建的变量。<a class="external autonumber" title="http://computing-dictionary.tfd.com/scope" href="http://computing-dictionary.tfd.com/scope" rel="nofollow">[2]</a><br />
</p>
<p>可是这能够说明什么问题呢？ 每当有人在说&#8220;这是作用域的问题&#8221;或&#8220;作用域搞错了&#8221;的时候，那就是说某个函数运行起来的时候，找不到正确变量的位置。这样我们便知道应该从哪一方面入手，查找出问题所在。 </p>
<a name=".E6.AD.A3.E5.BC.8F.E5.BC.80.E5.A7.8B"></a>
<h3><span class="editsection"><a title="Edit section: 正式开始" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit&amp;section=3"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">正式开始</span></h3>
<p>实际上每一个你定义的函数都是某个对象的方法。甚至是这样的写法： </p>
<pre class="source source-javascript"><span class="kw2">function</span> fn<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">alert</span><span class="br0">(</span><span class="nu0">11</span><span class="br0">)</span>;
<span class="br0">}</span></pre>
<p>老兄你不是故弄玄虚吧～。做一个这样的演示可真得是简单得要命。没错！本例不需要任何Javascript文件，服务器或html。你只要打开firefox，弹出firebug,点击console tab。在Firefox状态栏上面看到有&gt;&gt;&gt;提示的地方就可以输入了。 </p>
<p>输入： </p>
<pre class="source source-javascript"><span class="kw2">function</span> fn<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw3">alert</span><span class="br0">(</span><span class="nu0">11</span><span class="br0">)</span>; <span class="br0">}</span>;</pre>
<p>然后回车。一切安然...你刚才做的实际上是定义了一个函数fn。接着试试： </p>
<pre class="source source-javascript">fn<span class="br0">(</span><span class="br0">)</span>;</pre>
<p>然后回车。得到11的警告窗口？还不错吧？接着试试： </p>
<pre class="source source-javascript">window.<span class="me1">fn</span><span class="br0">(</span><span class="br0">)</span>;
<span class="kw1">this</span>.<span class="me1">fn</span><span class="br0">(</span><span class="br0">)</span>;</pre>
<p>得到一样的结果吧？这是因为函数fn是window对象的一个方法，在第二行的"this"的作用域实际指向了window对象。不过多数情况中你不需要像这样window.myFunction(...)地调用函数，这样太麻烦了，程序员工作起来会很不方便。 </p>
<a name="window.E5.AF.B9.E8.B1.A1"></a>
<h3><span class="editsection"><a title="Edit section: window对象" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit&amp;section=4"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">window对象</span></h3>
<p><strong>window</strong> 对象总是存在的，你可理解其为一个浏览器窗口对象。它包含了其它所有的对象如<strong>document</strong> 和所有的全局变量。 </p>
<p>你可以打开Firebug，切换到 <strong>Script</strong> 页面并在Firebug右侧的<strong>New watch expression...</strong> 里面输入 <strong>window</strong>。观察window对象究竟有什么在里面。 </p>
<p>接着，尝试找出我们之前定义过的<strong>fn</strong>函数。 </p>
<p><strong>另外，每个frame或iframe拥有其自身的window对象，其自身的全局空间。</strong> </p>
<a name=".E7.90.86.E8.A7.A3.E4.BD.9C.E7.94.A8.E5.9F.9F"></a>
<h3><span class="editsection"><a title="Edit section: 理解作用域" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit&amp;section=5"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">理解作用域</span></h3>
<p>接下的内容开始有点复杂了。切换到Firebug <strong>Console</strong>标签页然后输入： </p>
<pre class="source source-javascript"><span class="kw2">var</span> o1 = <span class="br0">{</span>testvar:<span class="nu0">22</span>, fun:<span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw3">alert</span><span class="br0">(</span><span class="st0">'o1: '</span> + <span class="kw1">this</span>.<span class="me1">testvar</span><span class="br0">)</span>; <span class="br0">}</span><span class="br0">}</span>;
<span class="kw2">var</span> o2 = <span class="br0">{</span>testvar:<span class="nu0">33</span>, fun:<span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw3">alert</span><span class="br0">(</span><span class="st0">'o2: '</span> + <span class="kw1">this</span>.<span class="me1">testvar</span><span class="br0">)</span>; <span class="br0">}</span><span class="br0">}</span>;</pre>
<p>结果是什么？你声明了<strong>o1</strong> 和 <strong>o2</strong>两个对象，分别都有一些属性和方法，但值不同。 </p>
<p><br />
接着试试： </p>
<pre class="source source-javascript">fun<span class="br0">(</span><span class="br0">)</span>;
window.<span class="me1">fun</span><span class="br0">(</span><span class="br0">)</span>;
<span class="kw1">this</span>.<span class="me1">fun</span><span class="br0">(</span><span class="br0">)</span>;</pre>
<p>出错了，是吧？因为window对象（等价于this）并没有fun的方法。试一试下面的： </p>
<pre class="source source-javascript">o1.<span class="me1">fun</span><span class="br0">(</span><span class="br0">)</span>;
o2.<span class="me1">fun</span><span class="br0">(</span><span class="br0">)</span>;</pre>
<p>22和33出来了？非常好！ </p>
<p>接下来这部分的内容最复杂啦。基于这个原始的函数，如果对象的数量多的话，你必须为每个对象加上这个函数－明显是重复劳动了。这样说吧，o1.fun写得非常清晰的而且为了搞掂它已经占用了我一个星期的开发时间。想象一下代码到处散布着<strong>this</strong>变量，怎么能不头疼？如果要将调用（执行）的o1.fun方法但<strong>this</strong>会执行o2,应该怎么实现呢？试一试下面的： </p>
<pre class="source source-javascript">o1.<span class="me1">fun</span>.<span class="me1">call</span><span class="br0">(</span>o2<span class="br0">)</span>;</pre>
<p>明白了吗？当执行o1的fun方法时你强行将变量<strong>this</strong>指向到o2这个对象，换句话说，更加严谨地说:<strong>o1.fun的方法在对象o2的作用域下运行。</strong> </p>
<p>当运行一个函数，一个对象的方法时，你可将作用域当作<strong>this值的变量</strong>。 </p>
<a name=".E5.8F.98.E9.87.8F.E7.9A.84.E5.8F.AF.E8.A7.81.E5.BA.A6"></a>
<h3><span class="editsection"><a title="Edit section: 变量的可见度" href="http://extjs.com/learn/w/index.php?title=Tutorial:What_is_that_Scope_all_about_%28Chinese%29&amp;action=edit&amp;section=6"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">变量的可见度</span></h3>
<p>变量的可见度和作用域的关系非常密切。我们已经了解到，可在任何对象的外部，声明变量，或在全局的函数（函数也是变量的一种）也可以，更严格说，它们是全局对象<strong>window</strong>的属性。 <strong>全局变量在任何地方都可见；无论函数的内部还是外部。如果你在某一个函数内修改了一个全局变量，其它函数也会得知这个值是修改过的。</strong> </p>
<p>对象可以有它自己的属性（像上面的<strong>testvar</strong>）,这些属性允许从内部或是外部均是可见的。试： </p>
<pre class="source source-javascript"><span class="kw3">alert</span><span class="br0">(</span>o1.<span class="me1">testvar</span><span class="br0">)</span>; <span class="co1">// 从外部访问o1的属性testvar</span></pre>
<p>从内部访问的演示可在两个测试对象的<strong>fun</strong>方法找到。 </p>
<p>用关键字<strong>var</strong>在内部声明，相当于声明局部变量（局部声明也是在一条链上，即Scope Chain 作用域链上，Frank注）： </p>
<pre class="source source-javascript">i = <span class="nu0">44</span>;
<span class="kw2">function</span> fn2<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw2">var</span> i = <span class="nu0">55</span>;
<span class="kw3">alert</span><span class="br0">(</span>i<span class="br0">)</span>;
<span class="br0">}</span>
fn2<span class="br0">(</span><span class="br0">)</span>;</pre>
<p>将得到什么？对了，55。声明在函数fn2的变量<strong>i</strong>是一个本地变量（局部变量），和等于44的全局变量<strong>i</strong> 44没什么关系。 But: </p>
<pre class="source source-javascript"><span class="kw3">alert</span><span class="br0">(</span>i<span class="br0">)</span>;</pre>
<p>这会访问全局变量<strong>i</strong>，显示44。 </p>
<p>希望本文能帮助读者彻底理解作用域变量可见性的含义。 </p>
<p>延伸阅读： </p>
<ul>
    <li><a class="external text" title="http://www.digital-web.com/articles/scope_in_javascript" href="http://www.digital-web.com/articles/scope_in_javascript" rel="nofollow">Scope in JavaScript</a> </li>
</ul>
<ul>
    <li><a class="external text" title="http://extjs.com/deploy/dev/docs/" href="http://extjs.com/deploy/dev/docs/" rel="nofollow">Ext Programmer's API Documentation</a>
    <li><a class="external text" title="http://extjs.com/forum/" href="http://extjs.com/forum/" rel="nofollow">Ext User Forums</a> </li>
</ul>
<!-- Pre-expand include size: 1035 bytes
Post-expand include size: 1930 bytes
Template argument size: 1220 bytes
Maximum: 2097152 bytes
-->
<div class="printfooter">Retrieved from "<a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29">http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29</a>"</div>
</div>
</div>
</div>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/271258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-18 10:32 <a href="http://www.blogjava.net/caizh2009/articles/271258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻松地进入Ext的世界--firefox debug</title><link>http://www.blogjava.net/caizh2009/articles/271249.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Mon, 18 May 2009 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/271249.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/271249.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/271249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/271249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/271249.html</trackback:ping><description><![CDATA[<h1 class="firstHeading">Tutorial:Playing With Ext The Easy Way (Chinese)</h1>
<div id="bodyContent">
<h3 id="siteSub">From Learn About the Ext JavaScript Library</h3>
<div id="contentSub"></div>
<div id="jump-to-nav">Jump to: <a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29#column-one">navigation</a>, <a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29#searchInput">search</a></div>
<!-- start content -->
<p><br />
</p>
<div class="tutorialSummary">
<table>
    <tbody>
        <tr>
            <td><strong>Summary:</strong> Playing With Ext The Easy Way (Chinese) </td>
        </tr>
        <tr>
            <td><strong>Author:</strong> <a class="external text" title="http://patspam.com" href="http://patspam.com/" rel="nofollow">Patrick Donelan</a> (翻译：<a class="external text" title="http://www.5iya.com/blog" href="http://www.5iya.com/blog" rel="nofollow">Cloudream</a>) </td>
        </tr>
        <tr>
            <td><strong>Published:</strong> 2007-10-12 </td>
        </tr>
        <tr>
            <td><strong>Ext Version:</strong> 2.0 </td>
        </tr>
        <tr>
            <td><strong>Languages:</strong> <span style="white-space: nowrap"><img alt="en.png" src="http://extjs.com/modules/i18n/flags/en.png" /> <a title="Tutorial:Playing With Ext The Easy Way" href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way">English</a></span> <span style="white-space: nowrap"><img alt="de.png" src="http://extjs.com/modules/i18n/flags/de.png" /> <a title="Tutorial:Playing With Ext The Easy Way (German)" href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28German%29">Deutsch</a></span> <span style="white-space: nowrap"><img alt="cn.png" src="http://extjs.com/modules/i18n/flags/cn.png" /> <strong class="selflink">Chinese</strong></span> <span style="white-space: nowrap"><img alt="kr.png" src="http://extjs.com/modules/i18n/flags/kr.png" /> <a title="Tutorial:Playing With Ext The Easy Way (Korean)" href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Korean%29">Korean</a></span> <span style="white-space: nowrap"><img alt="jp.png" src="http://extjs.com/modules/i18n/flags/jp.png" /> <a title="Tutorial:Playing With Ext The Easy Way (Japanese)" href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Japanese%29">Japanese</a></span> <span style="white-space: nowrap"><img alt="es.png" src="http://extjs.com/modules/i18n/flags/es.png" /> <a title="Tutorial:Playing With Ext The Easy Way (Spanish)" href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Spanish%29">Spanish</a></span> <span style="white-space: nowrap"><img alt="tr.png" src="http://extjs.com/modules/i18n/flags/tr.png" /> <a title="Tutorial:Playing With Ext The Easy Way (Turkish)" href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Turkish%29">Turkish</a></span> </td>
        </tr>
    </tbody>
</table>
</div>
<table class="toc" id="toc" summary="Contents">
    <tbody>
        <tr>
            <td>
            <div id="toctitle">
            <h2>Contents</h2>
            <span class="toctoggle">[<a class="internal" id="togglelink" href="javascript:toggleToc()">hide</a>]</span></div>
            <ul>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29#.E8.B9.92.E8.B7.9A.E5.AD.A6.E6.AD.A5"><span class="tocnumber">1</span> <span class="toctext">蹒跚学步</span></a>
                <ul>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29#.E7.AC.AC.E4.B8.80.E6.AD.A5_-_.E5.85.A5.E9.97.A8"><span class="tocnumber">1.1</span> <span class="toctext">第一步 - 入门</span></a>
                    <li class="toclevel-2"><a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29#.E7.AC.AC.E4.BA.8C.E6.AD.A5_-_.E8.B5.B7.E6.AD.A5"><span class="tocnumber">1.2</span> <span class="toctext">第二步 - 起步</span></a> </li>
                </ul>
                <li class="toclevel-1"><a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29#.E7.89.9B.E5.88.80.E5.B0.8F.E8.AF.95"><span class="tocnumber">2</span> <span class="toctext">牛刀小试</span></a> </li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script><a name=".E8.B9.92.E8.B7.9A.E5.AD.A6.E6.AD.A5"></a>
<h3><span class="editsection"><a title="Edit section: 蹒跚学步" href="http://extjs.com/learn/w/index.php?title=Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29&amp;action=edit&amp;section=1"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">蹒跚学步</span></h3>
<a name=".E7.AC.AC.E4.B8.80.E6.AD.A5_-_.E5.85.A5.E9.97.A8"></a>
<h4><span class="editsection"><a title="Edit section: 第一步 - 入门" href="http://extjs.com/learn/w/index.php?title=Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29&amp;action=edit&amp;section=2"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">第一步 - 入门</span></h4>
<p>想必您已经听说过 Ext、浏览了<a class="external text" title="http://extjs.com/learn/" href="http://extjs.com/learn/" rel="nofollow">在线演示</a>，并且尝试阅读<a class="external text" title="http://extjs.com/deploy/dev/docs/" href="http://extjs.com/deploy/dev/docs/" rel="nofollow">API文档</a>。不过，面对复杂的API文档，您却不知如何下手？！ </p>
<a name=".E7.AC.AC.E4.BA.8C.E6.AD.A5_-_.E8.B5.B7.E6.AD.A5"></a>
<h4><span class="editsection"><a title="Edit section: 第二步 - 起步" href="http://extjs.com/learn/w/index.php?title=Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29&amp;action=edit&amp;section=3"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">第二步 - 起步</span></h4>
<p>通览过<a class="external text" title="http://extjs.com/deploy/dev/docs/" href="http://extjs.com/deploy/dev/docs/" rel="nofollow">API文档</a>，并且找到了所要立刻尝试的功能，面对混杂的网页源代码，如何开始一个简单的测试页面？那么&#8230;&#8230; </p>
<p>不论您的目标是什么，您都可以依照本文快速的开始使用Ext。不，不用搭建服务器，您所需要的仅仅是<a title="Manual:Resources" href="http://extjs.com/learn/Manual:Resources#Firebug">Firefox浏览器和Firebug调试插件</a>。如果还没有安装，那么现在就是一个好机会。 </p>
<p><br />
</p>
<a name=".E7.89.9B.E5.88.80.E5.B0.8F.E8.AF.95"></a>
<h3><span class="editsection"><a title="Edit section: 牛刀小试" href="http://extjs.com/learn/w/index.php?title=Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29&amp;action=edit&amp;section=4"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">牛刀小试</span></h3>
<ul>
    <li>打开<a class="external text" title="http://extjs.com/deploy/dev/docs/" href="http://extjs.com/deploy/dev/docs/" rel="nofollow">Ext API文档</a>，您已经上路！
    <li>单击 F12 打开 Firebug 控制台。
    <li>如果您的 firebug 控制台处于单行模式（以 '&gt;&gt;&gt;' 开头），那么请单击右下角的红色上箭头以开启多行编辑模式。
    <li>输入以下代码，并敲击 Ctrl-Enter 来运行: </li>
</ul>
<pre class="source source-javascript">Ext.<span class="me1">get</span><span class="br0">(</span>document.<span class="me1">body</span><span class="br0">)</span>.<span class="me1">update</span><span class="br0">(</span><span class="st0">'&lt;div id="test"&gt;&lt;/div&gt;'</span><span class="br0">)</span>;</pre>
<p>上边这行代码的作用是将当前DOM body元素用一个ID为<strong>test</strong>的div元素替换。刚才那些API文档已经被删除，但 Ext 代码依旧生效，并且随时为您效劳。 </p>
<p>现在，我们假设您希望简单的添加一个面板元素（Panel），但对Ext.Panel的API冗繁的说明无能为力。那么试着将这些代码添加到 firebug 的控制台中： </p>
<pre class="source source-javascript">Ext.<span class="me1">get</span><span class="br0">(</span>document.<span class="me1">body</span><span class="br0">)</span>.<span class="me1">update</span><span class="br0">(</span><span class="st0">'&lt;div id="test"&gt;&lt;/div&gt;'</span><span class="br0">)</span>;
<span class="kw2">new</span> Ext.<span class="me1">Panel</span><span class="br0">(</span><span class="br0">{</span>
renderTo: <span class="st0">'test'</span>,
width: <span class="st0">'200px'</span>,
title: <span class="st0">'My Title'</span>,
html: <span class="st0">'My HTML content'</span>
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>再次敲击 Ctrl-Enter 。嗨！您的面板元素已经诞生。 </p>
<p>很好，不过如果修改一些选项呢？用下边的代码替换刚才的那些代码： </p>
<pre class="source source-javascript">Ext.<span class="me1">get</span><span class="br0">(</span>document.<span class="me1">body</span><span class="br0">)</span>.<span class="me1">update</span><span class="br0">(</span><span class="st0">'&lt;div id="test"&gt;&lt;/div&gt;'</span><span class="br0">)</span>;
<span class="kw2">new</span> Ext.<span class="me1">Panel</span><span class="br0">(</span><span class="br0">{</span>
renderTo: <span class="st0">'test'</span>,
width: <span class="st0">'200px'</span>,
title: <span class="st0">'My Title'</span>,
html: <span class="st0">'My HTML content'</span>,
collapsible: <span class="kw2">true</span>
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>敲击 Ctrl-Enter 。怎么样，一个可以伸缩的面板就配置好了。（注意面板右上角的小图标） </p>
<p>每次敲击 Ctrl-Enter ，第一行代码都会移除现有的内容，这样您就可以有一个干净的调试环境。这是一个简单的小技巧，十分方便您尝试各种配置选项。 </p>
<p>您可以为<strong>update()</strong>函数添加所需要的 HTML 代码，无论多少。然后编写或多或少的 Javascript 来探索 Ext API。 </p>
<p>还等什么？现在就去亲自实践 Ext Api 吧。 </p>
<ul>
    <li><a class="external text" title="http://extjs.com/deploy/dev/docs/" href="http://extjs.com/deploy/dev/docs/" rel="nofollow">Ext Programmer's API Documentation</a>
    <li><a class="external text" title="http://extjs.com/forum/" href="http://extjs.com/forum/" rel="nofollow">Ext User Forums</a> </li>
</ul>
<!-- Pre-expand include size: 1285 bytes
Post-expand include size: 2423 bytes
Template argument size: 1537 bytes
Maximum: 2097152 bytes
-->
<div class="printfooter">Retrieved from "<a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29">http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29</a>"</div>
<div id="catlinks">
<p class="catlinks"><a title="Special:Categories" href="http://extjs.com/learn/Special:Categories">Categories</a>: <span dir="ltr"><a title="Category:Tutorial" href="http://extjs.com/learn/Category:Tutorial">Tutorial</a></span> | <span dir="ltr"><a class="new" title="Category:Chinese" href="http://extjs.com/learn/w/index.php?title=Category:Chinese&amp;action=edit">Chinese</a></span></p>
</div>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/271249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-18 10:21 <a href="http://www.blogjava.net/caizh2009/articles/271249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EXT新手建议：建立自己的工具箱</title><link>http://www.blogjava.net/caizh2009/articles/271235.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Mon, 18 May 2009 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/271235.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/271235.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/271235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/271235.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/271235.html</trackback:ping><description><![CDATA[<p>我认为学习EXT开发最好的方法是，在真正开发之前，掌握好高级JavaScript知识， 就像鱼儿游在水里一样对JS运用自如。 </p>
<p>自己可以创建JavaScript的类、明白类原型（class's prototype）的原理， 和明白函数的作用域都是有益的帮助。 明白Ajax为什么要异步方式也是其中的一个知识点。 </p>
<p>论坛上50％所提出的问题很大原因是对JavaScript知识不牢固所至，而不是EXT API的问题。 当真正开始用EXT做开发了，那么安装目录下examples/*的文件夹超过70个例子便是研究的好对象， 这些例子为你展示了你日后将会使用的大多数技巧或方法。 接着，最好就是先拿examples/*的文件夹中例子练一练手，做一些简单、轻型的小项目。 如果直接拿EXT结合到程序去开发，很可能你会因为越来越复杂的问题泥足深陷。 </p>
<p>把每一项的 知识点/技巧 都做成可单独运行文件，这样以便你以后参考，还有一个好处是，可以发到论坛上，然后我们放到examples/*的文件夹，以便我们的测试并协助你。 如果能按照以上的建议去做，我相信这是一个很好的累积。而且按照我的角度看，整个UI就是这样一点一点构建起来。</p>
<img src ="http://www.blogjava.net/caizh2009/aggbug/271235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-18 09:44 <a href="http://www.blogjava.net/caizh2009/articles/271235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext 2简述</title><link>http://www.blogjava.net/caizh2009/articles/271232.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Mon, 18 May 2009 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/271232.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/271232.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/271232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/271232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/271232.html</trackback:ping><description><![CDATA[<span class="mw-headline">有关重大改变的几个要点</span>
<p>文章内容是对2.0新变化的综合简述。请留意Ext框架在从1.x跨越到2.0的过程中，经历了无数的细微改进、臭虫修正和其他的改动。 要逐一列出尚难为之，所以本文着重提及架构上有转换的地方，和一些全新加入的功能。本文下列的各部分将完整地解释这每一项的细节。 </p>
<ul>
    <li><strong>组件模型 Component Model</strong><br />
    在1.x中就有Component和BoxComponent两个类了，但却没有深入整合到框架中去。到2.0，这两个类得到极大的改进并是一切主要组件的基础。 尽管这些类对于开发者而言一般是尽量隐藏细节，不过理解好组件生存周期这方面的基础知识有利于进一步的Ext学习。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#Component_Model">参阅详细</a>。
    <li><strong>容器模型 Container Model</strong><br />
    有几个核心类可用于生成器件（widgets）和包含其它组件的布局。 <strong>容器Container</strong>为对象的容纳和组件的布局提供一个基础性的构成方式，对于整个Ext框架可视化必不可少。 <strong>面板Panel</strong> 从容器类继承，为用户程序提供特定功能的UI基类，属于容器结构层次中最常用的类。 <strong>窗口Window</strong>是面板的一种特殊类型，使得web应用程序如桌面式（desktop-style）那样。<strong>视见区Viewport</strong>是专为全屏幕web程序应用而设计的实用容器 。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#Container_Model">参阅详细</a>
    <li><strong>布局Layouts</strong><br />
    1.x中的布局方式集中围绕在BorderLayout和其相关的几个类。2.0中，布局的整体架构建立在崭新的容器类、布局类上。 BorderLayout现加入到九种风格布局之中。布局类已经是全部重写设计并考虑最大的可扩展性。 布局的管理亦受益于2.0的框架，去掉一些开发者之前需要面对的复杂实现。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#Layouts">参阅详细</a>
    <li><strong>Grid</strong><br />
    Grid组件往往都被认为是Ext的核心组件之一，在2.0的版本中同时继续演进。新版的用户界面更友好，性能更佳，功能上新加了行摘要、行归组、和一些基于插件实现如expandable rows和row numbering 等等的更多功能。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#Grid">参阅详细</a>
    <li><strong>模板 XTemplate</strong><br />
    1.x的模版类处理一些简单的模版时令人满意，但对于复杂的输出任务就缺乏健壮的支持。 在2.0中，全新的XTemplate可支持子模版，数组处理，直接代码执行，逻辑判断和更多有用的功能。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#XTemplate">参阅详细</a>
    <li><strong>数据视图 DataView</strong><br />
    1.x的模版将数据绑定到模版以生成制定的UI视图。JsonView是快速绑定JSON数据辅助类。2.0的DataView把以上两种方式作统一的处理，不同之处是它继承自BoxComponent，可更好地支持各种布局方式，新的XTemplate类为模版处理提供强大的支持。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#DataView">参阅详细</a>
    <li><strong>其它新组件</strong><br />
    这些新组件包括动作（Action）、CycleButton、 Hidden (field)、 ProgressBar和TimeField。<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#Other_New_Components">参阅详细</a> </li>
</ul>
<a name=".E8.A1.A5.E5.85.85.E8.AF.B4.E6.98.8E"></a>
<h4><span class="editsection"><a title="Edit section: 补充说明" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=3"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">补充说明</span></h4>
<ul>
    <li><strong>主题</strong><br />
    2.0支持开箱即用的主题（Theme），使用更为简化。Ext 1.x支持四套主题，但2.0减少到两套（"Ext Blue" 和Gray）。 如打算自定义Ext的主题，那么Gray主题就是一份不错的蓝本，另外一些<a title="Ext Extensions" href="http://extjs.com/learn/Ext_Extensions#Ext_2.0_Themes">2.0 社区主题</a>也可以提供一些思路或直接使用。 这不是API改动的一部分，但是有需要在这里提及一下。
    <li><strong>突破性进展</strong><br />
    令人遗憾，2.0的一些改动无法做到向后兼容。因为无论相关的组件还是渲染模型已经是从底层上大幅修改，许多现有的组件必须舍弃旧1.x的方式重写编写，与1.x的差别较大。 我们提供的<a title="Ext 1 to 2 Migration Guide" href="http://extjs.com/learn/Ext_1_to_2_Migration_Guide">1.x到2.0升级指南</a>希望能协助解决现有Ext 1.x程序的升级问题。 </li>
</ul>
<a name=".E7.BB.84.E4.BB.B6.E6.A8.A1.E5.9E.8B_Component_Model"></a>
<h3><span class="editsection"><a title="Edit section: 组件模型 Component Model" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=4"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">组件模型 Component Model</span></h3>
<a name=".E7.BB.84.E4.BB.B6.E6.A6.82.E8.BF.B0"></a>
<h4><span class="editsection"><a title="Edit section: 组件概述" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=5"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">组件概述</span></h4>
<p>2.0的一个目标就是希望能以简单的代码块构建程序，甚至比以往更简单。 <a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component" rel="nofollow">组件Component</a>类最初在1.x引入，却没有全面整合到框架中去。在2.0中，组件所赋予的能力有长足的改进和提升，使得其成为整个架构里最为基础的一个类。组件对象为组件的创建、渲染、事件处理、状态管理和销毁提供了统一的模型，Ext下面的每一个组件具备了这些由组件对象扩展出来的特性。这是2.0组件对象的关键特性： </p>
<ul>
    <li><strong>显式声明构建器链和重写 Explicit constructor chaining and overriding</strong><br />
    组件会将一个基础构造器连同配置传入到子类中。函数<tt>initComponent</tt>用于提供制定的构造器逻辑，只要在继承链上的某一个子类实现便可，所有的组件都遵从此方式。此时的子类就可在<tt>initComponent</tt>中对其设置相关的属性，实现具体的功能。
    <li><strong>可调控的渲染 Managed rendering</strong><br />
    2.0中，每个组件都支持延时渲染（lazy rendering），又称按需渲染（on-demand rendering）。渲染的调控一般是为你自动设置完好的。即使如此，你亦可以通过的<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=beforerender" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=beforerender" rel="nofollow">beforerender</a>和<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=render" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=render" rel="nofollow">render</a>事件控制渲染发生、结束，达到最为灵活的自定义调控。
    <li><strong>可调控的销毁 Managed destruction</strong><br />
    每一个组件具有<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=destroy" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=destroy" rel="nofollow">destroy</a>的函数，当组件不再需要时，Ext就负责组件的结束调控，如自动垃圾回收和摧毁组件元素。当然，销毁亦提供相应的事件，如<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=beforedestroy" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=beforedestroy" rel="nofollow">beforedestroy</a>和<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=destroy" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=destroy" rel="nofollow">destroy</a>可按照实际的情况作出逻辑处理。
    <li><strong>状态管理自动化 Automatic state management</strong><br />
    组件内建设置和获取状态（State）的功能，只要让全局对象<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.state.Manager" href="http://extjs.com/deploy/dev/docs/?class=Ext.state.Manager" rel="nofollow">StateManager</a>和一个状态 Provider都初始化好，那么多数的组件都具有自动状态管理的能力。
    <li><strong>组件常规行为的统一接口 Consistent interface for basic component behavior</strong> <br />
    一般常规的行为如隐藏、显示和激活、禁用均是组件的基本特性。如需要，这些都可由子类去重写或制定。
    <li><strong>由组件管理器负责的可用调配 Availability via ComponentMgr</strong><br />
    Ext的每一个组件在创建的时候就会由组件管理器登记注册，即你可随时获取任何组件，只需调用<tt>Ext.getCmp('id')</tt>。
    <li><strong>支持插件 Plugin support</strong><br />
    现在任何的组件可以通过插件的形式来扩展了。插件实质是带有<tt>init</tt>方法的一种类。该方法会有一个单独的参数（类型为Ext.Component）传入到其中。插件可通过组件的<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=plugins" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=plugins" rel="nofollow">plugins</a>配置项指定。当组件创建时，如果有插件可用，组件就会调用每个插件上的<tt>init</tt>方法，将自身的引用作为参数传入。 每个插件运行之后可调用组件的方法或响应组件的事件以实现自身的功能。 </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 class="editsection"><a title="Edit section: 组件的生存周期Component Life Cycle" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=6"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">组件的生存周期Component Life Cycle</span></h4>
<p>一般来说，组件的对象架构满足了&#8220;能运行（Just Works）&#8221;这一基本要求。架构在设计上已是调控好了大多数组件是怎样处理的，而且对最终开发者是透明的。 不过，若对组件对象扩展，或是有些需要制定的地方，就要利用一定的时间去实现。 深入理解组件对象的生存周期会是非常好的帮助。下面的内容就是对基于组件的每个类，一个周期内各个重要阶段作出解释：</p>
<a name=".E5.88.9D.E5.A7.8B.E5.8C.96Initialization"></a>
<h5 style="margin-left: 15px"><span class="editsection"><a title="Edit section: 初始化Initialization" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=7"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">初始化Initialization</span></h5>
<ol>
    <li><strong>配置项对象生效了 <br />
    The config object is applied.<br />
    </strong>组件对象的构造器会把全部的配置项传入到其子类中去，并且进行下列所有的步骤。
    <li><strong>组件的底层事件创建了<br />
    The base Component events are created</strong><br />
    这些事件由组件对象负责触发。事件有enable, disable, beforeshow, show, beforehide, hide, beforerender, render, beforedestroy, destroy （参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component" rel="nofollow">Component API文档</a>完整的内容）。
    <li><strong>组件在组件管理器里登记了<br />
    The component is registered in ComponentMgr</strong><br />
    initComponent这方法总是使用在子类中，就其本身而论，该方法是一个模板方法（template method），用于每个子类去现实任何所需的构造器逻辑（any needed constructor logic）。首先会创建类，然后组件对象各层次里面的每个类都应该调用<tt>superclass.initComponent</tt>。通过该方法，就可方便地实现（implement），或重写（Override）任意一层构造器的逻辑。
    <li><strong>状态感知进行初始化（如果有的话）<br />
    State is initialized (if applicable)</strong><br />
    如果组件是状态感知的，其状态会进行刷新。
    <li><strong>加载好插件（如果有的话）<br />
    Plugins are loaded (if applicable)</strong><br />
    如果该组件有指定任何插件，这时便会初始化。
    <li><strong>渲染好插件（如果必须的话）<br />
    The component is rendered (if applicable)</strong><br />
    如果指定了组件的<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=renderTo" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=renderTo" rel="nofollow">renderTo</a> 或 <a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=applyTo" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=applyTo" rel="nofollow">applyTo</a>配置属性，那么渲染工作就会立即开始，否则意味着延时渲染，即等待到显式控制显示，或是其容器告知其显示的命令。 </li>
</ol>
<a name=".E6.B8.B2.E6.9F.93.E8.BF.87.E7.A8.8B_Rendering"></a>
<h5 style="margin-left: 15px"><span class="editsection"><a title="Edit section: 渲染过程 Rendering" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=8"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">渲染过程 Rendering</span></h5>
<ol>
    <li><strong>触发beforerender事件 The beforerender event is fired</strong><br />
    这是个可取消的事件，指定的句柄（handler）可阻止组件进行渲染
    <li><strong>设置好容器 The container is set</strong><br />
    如果没有指定一个容器，那么将使用位于DOM元素中组件的父节点作为容器。
    <li><strong>调用onRender方法 The onRender method is called</strong><br />
    这是子类渲染最重要的一个步骤，由于该方法是一个模板方法（template method），用于每个子类去现实任何所需的渲染逻辑（any needed render logic）。首先会创建类，然后组件对象各层次里面的每个类都应调用<tt>superclass.onRender</tt>。通过该方法，就可方便地实现（implement），或重写（Override）任意一层渲染的逻辑。
    <li><strong>组件是&#8220;隐藏&#8221;状态的 The Component is "unhidden"</strong><br />
    默认下，许多组件是由CSS样式类如"x-hidden"设置隐藏的。如果 <a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=autoShow" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=autoShow" rel="nofollow">autoShow</a>所配置的值为true，这时就不会有这个"hide"样式类作用在该组件上
    <li><strong>自定义的类、样式生效了 Custom class and/or style applied</strong><br />
    一切组件的子类都支持<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=cls" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=cls" rel="nofollow">cls</a>和<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=style" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=style" rel="nofollow">style</a> 两种特殊的配置属性，分别用于指定用户自定义的CSS样式类和CSS规则。 推荐指定<tt>cls</tt>的方法来制定组件及其各部分的可视化设置。由于该样式类会套用在组件markup最外的一层元素，所以标准CSS规则会继承到组件下任何子元素的身上。
    <li><strong>触发render事件 The render event is fired</strong><br />
    这是组件通知成功渲染的一个步骤。这时，你可肯定地认为组件的DOM元素是可用的了。如果尝试在渲染之前访问组件，会抛出一个不可用的异常。
    <li><strong>调用了afterRender方法 The afterRender method is called</strong><br />
    这是另外一个实现或重写特定所需的&#8220;后渲染&#8221;逻辑的模板方法。每个子类应调用<tt>superclass.afterRender</tt>.
    <li><strong>组件被隐藏或禁用（如果有的话） The Component is hidden and/or disabled (if applicable)</strong><br />
    配置项hidden和disabled到这步生效
    <li><strong>所有状态感知的事件初始化（如果有的话） Any state-specific events are initialized (if applicable)</strong><br />
    状态感知的组件可由事件声明特殊加载和保存状态。如支持，加入此类的事件。 </li>
</ol>
<a name=".E9.94.80.E6.AF.81.E8.BF.87.E7.A8.8B_Destruction"></a>
<h5 style="margin-left: 15px"><span class="editsection"><a title="Edit section: 销毁过程 Destruction" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=9"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">销毁过程 Destruction</span></h5>
<ol>
    <li><strong>触发beforedesroy事件 The beforedestroy event is fired</strong><br />
    这是个可取消的事件，指定的句柄（handler）可阻止组件被销毁。
    <li><strong>调用了beforeDestroy方法 The beforeDestroy method is called</strong><br />
    这是另外一个实现或重写预定销毁逻辑的模板方法。每个子类应调用<tt>superclass.beforeDestroy</tt>。
    <li><strong>元素及其侦听器被移除 Element and its listeners are removed</strong><br />
    若组件是渲染好的，所属的元素的事件侦听器和DOM树中的元素都会被移除。
    <li><strong>调用了onDestroy方法 The onDestroy method is called</strong><br />
    这是另外一个实现或重写特定所需的&#8220;后销毁&#8221;逻辑的模板方法。每个子类应调用<tt>superclass.onDestroy</tt>。<strong>注意</strong> 容器类（Container class，和一切容器的子类）提供了一个默认的<tt>onDestroy</tt>实现，自动遍历其<tt>items</tt>集合里的每一项，分别地执行子组件身上的<tt>destroy</tt>方法。
    <li><strong>在组件管理器中撤销组件对象的登记 Component is unregistered from ComponentMgr</strong><br />
    使得不能再从Ext.getCmp获取组件对象
    <li><strong>触发destroy事件 The destroy event is fired</strong><br />
    这是组件成功销毁的一个简单通知。此时组件已经DOM中已是不存在的了
    <li><strong>组件上的事件侦听器被移除 Event listeners on the Component are removed</strong><br />
    组件本身可允许从所属的元素得到事件侦听器。如有的话，连同删除。 </li>
</ol>
<a name=".E7.BB.84.E4.BB.B6.E7.9A.84X.E7.B1.BB.E5.9E.8B_XTypes"></a>
<h4><span class="editsection"><a title="Edit section: 组件的X类型 XTypes" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=10"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">组件的X类型 XTypes</span></h4>
<p><strong>XTypes</strong>是Ext 2.0中新的概念，被认为是Ext组件的特定类型。可用的xtype摘要可在 <a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component" rel="nofollow">Component类API</a>开始的地方找到。与一般JavaScript对象用法相似，XTypes可用于查找或比较组件对象，如<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=isXType" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=isXType" rel="nofollow">isXType</a>和<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=getXType" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=getXType" rel="nofollow">getXType</a>等的方法。其中<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=getXTypes" href="http://extjs.com/deploy/dev/docs/?class=Ext.Component&amp;member=getXTypes" rel="nofollow">getXTypes</a>的方法可列出任意组件的xtpye层次表。</p>
<p>然而，Xtypes最大的用途是怎么用于优化组件的创建和渲染过程。 通过指定一个xtype的配置对象的写法，可隐式声明的方式创建组件，使得当不需要立即渲染的情况就只是一个对象，省去不必要的实例化步骤。这时不仅渲染的动作是延时的，而且创建实际对象的这一步也是延时的，从而节省了内存和资源。 在复杂的布局中，这种性能上的改进尤为明显。 </p>
<pre class="source source-javascript"><span class="co1">//显式创建所容纳的组件</span>
<span class="kw2">var</span> panel = <span class="kw2">new</span> Ext.<span class="me1">Panel</span><span class="br0">(</span><span class="br0">{</span>
...
<span class="me1">items</span>: <span class="br0">[</span>
<span class="kw2">new</span> Ext.<span class="me1">Button</span><span class="br0">(</span><span class="br0">{</span>
text: <span class="st0">'OK'</span>
<span class="br0">}</span><span class="br0">)</span>
<span class="br0">]</span>
<span class="br0">}</span>;
&nbsp;
<span class="co1">//使用xtype创建</span>
<span class="kw2">var</span> panel = <span class="kw2">new</span> Ext.<span class="me1">Panel</span><span class="br0">(</span><span class="br0">{</span>
...
<span class="me1">items</span>: <span class="br0">[</span><span class="br0">{</span>
xtype: <span class="st0">'button'</span>,
text: <span class="st0">'OK'</span>
<span class="br0">}</span><span class="br0">]</span>
<span class="br0">}</span>;</pre>
<p>第一个例子中，面板初始化的同时，按钮总是会立即被创建的。如果加入较多的组件，这种方法很可能减慢的渲染速度。第二例子中，按钮直到面板真正在浏览器上需要显示才会被创建和渲染。 </p>
<p>如果面板从未显示（例如有个tab一直是隐藏的），那么按钮就不会被创建，不会消耗任何资源了。 </p>
<a name="BoxComponent"></a>
<h4><span class="editsection"><a title="Edit section: BoxComponent" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=11"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">BoxComponent</span></h4>
<p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.BoxComponent" href="http://extjs.com/deploy/dev/docs/?class=Ext.BoxComponent" rel="nofollow">BoxComponent</a> 是另外一个重要的基类，该类从组件Component扩展，为任何要进行可视渲染和参与布局的组件提供了一致的、跨浏览器的箱子模型（Box Model）实现。BoxComponent负责调节大小和定位，自动处理各浏览器之间的差异，如外/内补丁、边框的问题，形成一个统一的箱子模型，以支持各种浏览器。2.0的一切容器类（container）继承自BoxComponent。</p>
<a name=".E5.AE.B9.E5.99.A8.E6.A8.A1.E5.9E.8BContainer_Model"></a>
<h3><span class="editsection"><a title="Edit section: 容器模型Container Model" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=12"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">容器模型Container Model</span></h3>
<div class="thumb tright">
<div class="thumbinner" style="width: 309px"><a class="internal" title="Ext 2.0 Component/Container Class Hierarchy" href="http://extjs.com/learn/Image:Ext2-Container-hierarchy.gif"><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 class="thumbcaption">Ext 2.0 Component/Container Class Hierarchy</div>
</div>
</div>
<a name=".E5.AE.B9.E5.99.A8_Container"></a>
<h4><span class="editsection"><a title="Edit section: 容器 Container" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=13"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">容器 Container</span></h4>
<p>一个组件如果有<em>包含其它的组件</em>，那么，<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Container" href="http://extjs.com/deploy/dev/docs/?class=Ext.Container" rel="nofollow">容器Container</a>便是这个组件奠基之石。该类提供了布局方面和调节大小、嵌套组所需的逻辑，并且提供一个基础性的加入组件协调机制。容器类不应该直接使用，其目的在于为一切可视的容器组件提供一个基类。</p>
<a name=".E9.9D.A2.E6.9D.BF_Panel"></a>
<h4><span class="editsection"><a title="Edit section: 面板 Panel" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=14"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">面板 Panel</span></h4>
<p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Panel" href="http://extjs.com/deploy/dev/docs/?class=Ext.Panel" rel="nofollow">面板Panel</a>是2.0最常用的容器，90％布局任务都离不开面板。布局里的排版元素便是面板，面板如同一张白纸，完全是空白的矩形，没有可视内容。虽然这样，面板也提供了一些预留区域， 方便加入程序所需的UI界面，包括顶部或底部的工具条、菜单栏、头部区域、底部区域和躯干区域。同时内建可展开和可收缩行为的按钮，和其它不同任务预设的按钮。面板可轻松地下降到任意的容器或布局，当中定位或渲染的逻辑全部由Ext调控， </p>
<p>下列是Ext 2.0面板最主要的几个子类：</p>
<ul>
    <li><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.grid.GridPanel" href="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" href="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" href="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" href="http://extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel" rel="nofollow">FormPanel</a> </li>
</ul>
<a name="Window"></a>
<h4><span class="editsection"><a title="Edit section: Window" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=15"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Window</span></h4>
<p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Window" href="http://extjs.com/deploy/dev/docs/?class=Ext.Window" rel="nofollow">Window</a> 是一种可浮动的、可最小/最大化的、可复原的、可拖动的..等此类的特殊面板。其目的在于实现一种具有桌面风格的程序界面的基类，像<a class="external text" title="http://extjs.com/deploy/dev/examples/desktop/desktop.html" href="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 class="editsection"><a title="Edit section: 视见区Viewport" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=16"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">视见区Viewport</span></h4>
<p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Viewport" href="http://extjs.com/deploy/dev/docs/?class=Ext.Viewport" rel="nofollow">视见区Viewport</a>是以document.body作容器的实用类，它会与浏览器视图自适应尺寸，是全屏幕应用的基础，如浏览器大小调节、布局重新计算的问题由该类自动完成。 <strong>注意视见区Viewport除了document.body元素外不能渲染在其它的容器上，所以一个页面只能有一个视见区。</strong></p>
<a name=".E5.B8.83.E5.B1.80_Layouts"></a>
<h3><span class="editsection"><a title="Edit section: 布局 Layouts" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=17"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">布局 Layouts</span></h3>
<div class="thumb tright">
<div class="thumbinner" style="width: 332px"><a class="internal" title="Ext 2.0 Layout Class Hierarchy" href="http://extjs.com/learn/Image:Ext2-Layout-hierarchy.gif"><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 class="thumbcaption">Ext 2.0 Layout Class Hierarchy</div>
</div>
</div>
<a name=".E5.BC.95.E8.A8.80"></a>
<h4><span class="editsection"><a title="Edit section: 引言" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=18"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">引言</span></h4>
<p>2.0中最具意义的改进之一。在创建优雅的程序布局时感受到易用性或灵活性方面带来的好处。在Ext 1.x，布局的开发集中围绕在BorderLayout、Region和ContentPanel几个类。 1.x BorderLayout已经可以方便地生成UI，但要真正创建属于自己的布局，还是没有足够的支持。 创建复杂的布局通常需要手工编写一些代码应付滚动条、嵌套和某些怪癖的问题。 </p>
<p>Ext 2.0带来了一个重写编写的、企业级应用的布局管理系统。 共有10种风格的布局管理器，分别提供构建各种可能的程序布局基础。Ext调控了布局诸如size、定位、滚动条和其他的属性方面的问题，一如既往地简单，开箱即用。在容器也可无限嵌套布局、混合其他不同风格的布局。 </p>
<p>布局由容器内置创建，所以布局不应通过关键字<strong>new</strong>实例化这种方式直接使用。 有一种内部的机制，容器与布局能够很好地协调工作—只需配置好相关的参数，容器就会委托其负责的布局类工作。创建容器的时候，你应选定一种布局的风格以及相关的配置，这两个配置是属性layout和属性layoutConfig。 举例：</p>
<pre class="source source-javascript"><span class="kw2">var</span> panel = <span class="kw2">new</span> Panel<span class="br0">(</span><span class="br0">{</span>
title: <span class="st0">'My Accordion'</span>,
layout: <span class="st0">'accordion'</span>,  <span class="co1">//在这个面板中所使用的布局样式</span>
layoutConfig: <span class="br0">{</span>
animate: <span class="kw2">true</span>     <span class="co1">//布局指定的配置项写在这里</span>
<span class="br0">}</span>
<span class="co1">// 其他Panel的选项</span>
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>当你创建嵌套布局时，明白面板包含其他面板是很重要的，<em>布局中的每个面板必须指定一个布局管理器</em>。 多数情况你不需要指定布局的风格如&#8220;border&#8221;或&#8220;accordion&#8221;，较常见的是&#8220;fit&#8221;那一种，会自动调整大小自适应它的容器。 如果你不指定某个布局管理器，默认的是ContainerLayout类，不过这样很可能导致一些意料不到的情况发生，所以最好精确声明一下。 </p>
<p><br />
</p>
<p>每种布局类都支持其特定的配置选项。关于布局每种配置选项可参考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 class="editsection"><a title="Edit section: 布局管理器 Layout Managers" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=19"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span 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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: ContainerLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=20"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">ContainerLayout</span></h5>
            <p>其它一切布局管理器的基类，容器若不指定某个布局管理器，则默认的管理器就是这个ContainerLayout。ContainerLayout没有任何的外观表示— 其主要的职责是容纳子项目、控制渲染和一些常见任务，如调节大小缓冲（resize buffering）。 ContainerLayout常用于扩展制定的布局，很少实例化直接使用。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.ContainerLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: CardLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=21"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">CardLayout</span></h5>
            <p>CardLayout将容器中的每个组件当作一个卡片来处理。在某一时间，只有一个卡片是可见的，容器象一个卡片堆栈一样工作。大多数的情况，用于向导（Wizards），制定的tab实现或其它多页面信息的场合。参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.CardLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: AbsoluteLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=22"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">AbsoluteLayout</span></h5>
            <p>这是一个非常简单的布局，通过X/Y坐标精确来定位包含各项的相关容器。参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.AbsoluteLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: ColumnLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=23"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">ColumnLayout</span></h5>
            <p>适用于多个列并排结构的布局风格，每个列的宽度须由像素值或百分比指定，但高度自适应于内容的高度。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.ColumnLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: AccordionLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=24"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">AccordionLayout</span></h5>
            <p>AccordionLayout包含了一组像卡片垂直方向堆栈的面板，同通过展开或收缩来显示内容。在某一时间，只有一个卡片是可见的。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.Accordion" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: FitLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=25"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">FitLayout</span></h5>
            <p>这是一个简单的布局，主要是创建一个适应容器大小的布局区域。如没有特定的布局要求这是容器最好的默认布局。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.FitLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: AnchorLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=26"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">AnchorLayout</span></h5>
            <p>这是为一些固定元素相对于容器四条边的布局。元素可通过与边缘的百分比或便宜一个值来定位，并支持相当于物理容器有不同尺寸的&#8220;虚拟层画布（virtual layout canvas）&#8221;。 详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.AnchorLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: FormLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=27"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">FormLayout</span></h5>
            <p>FormLayout是为创建一张要提交数据条目的表单而设计的布局风格。注意，一般来讲，和<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel" href="http://extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel" rel="nofollow">FormPanel</a>相似，此布局类都有表单提交的自动处理，但你会更倾向使用前者。 FormPanels<strong>必须</strong>指定layout:'form'（只能一定是这样）,所以表单额外需要一个布局将其嵌套。 参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.FormLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: BorderLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=28"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">BorderLayout</span></h5>
            <p>与1.x的BorderLayout的布局完全一致。布局区域支持嵌套， 滑动条面板和可关闭、微调的分隔区域。对于一些典型业务程序的UI尤为适用。详细<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.layout.BorderLayout" href="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" href="http://extjs.com/learn/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 class="editsection"><a title="Edit section: TableLayout" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=29"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span 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" href="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 class="editsection"><a title="Edit section: Grid" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=30"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Grid</span></h3>
<a name=".E6.A6.82.E8.BF.B0"></a>
<h4><span class="editsection"><a title="Edit section: 概述" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=31"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">概述</span></h4>
<p>2.0中的GridView有极大的改进，而Grid的UI部分，正是由GridView这个类来实现的。2.0中GridView最主要的新功能有：</p>
<ul>
    <li><strong>效能的提升</strong><br />
    GridView的底层结构和渲染代码已在2.0完整重构过，并侧重考虑了效能部分。正因性能的原因，锁定列的这一功能已经取消（参阅下一节）。
    <li><strong>感观（look and feel）的改进</strong><br />
    和新2.0的主题一起， Grid的外观控制也有新变化，使得Grid比以前更时尚和看上去更具吸引力。
    <li><strong>单行归组</strong><br />
    多个行可被归组到某一指定列，由用户重新归组亦可。
    <li><strong>多行组摘要</strong><br />
    每一组可相应的提供一个数据摘要组
    <li><strong>进阶插件支持</strong><br />
    在2.0中，新加入插件机制。GridView就是这种插件机制的一个典型例子。如范例中所示，Grid优秀的功能便是依靠几个预先做好的插件。插件RowExpander提供了展开、收缩行的功能，插件RowNumberer就提供了行中数字的支持。 </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 class="editsection"><a title="Edit section: 列锁定的注意事项（Column Locking）" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=32"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">列锁定的注意事项（Column Locking）</span></h4>
<p>有些用户或许发现Ext 1.x中列锁定的功能，到2.0因为已经取消，并可以说以后也不再支持了。列锁定（Column locking），虽然对某些用户来说有其的用途， 但与2.0 GridView的新功能有不兼容的地方（如归组、摘要等），而且为了实现锁定会使得Grid渲染性能开销增大。 因此，1.x gridView这功能的向上升级，或打补丁，均不会由官方支持。 </p>
<p><strong>注意：</strong>当前有为2.0而做的用户扩展在进行中，以实现2.0的列锁定，而且看上去写得还蛮不错。更多有用资讯可<a class="external text" title="http://extjs.com/forum/showthread.php?t=17942" href="http://extjs.com/forum/showthread.php?t=17942" rel="nofollow">论坛的帖子</a>找到。</p>
<a name="XTemplate"></a>
<h3><span class="editsection"><a title="Edit section: XTemplate" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=33"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">XTemplate</span></h3>
<p>XTemplate使用了多种标签和特殊操作符支持模板，使得模板在应付复杂的数据结构时尤为健壮。这里所列出的高度概括的几项功能，欲了解完整的细节和使用方法，请参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.+XTemplate" href="http://extjs.com/deploy/dev/docs/?class=Ext.+XTemplate" rel="nofollow">XTemplate API文档</a>.</p>
<ul>
    <li>自动数组填充和作用域切换
    <li>可在子模板作用域内访问父级对象
    <li>可访问数组索引
    <li>支持数据值的简单匹配
    <li>自动渲染浮点型数组（不包含非对象的值）
    <li>基础性的条件逻辑符号<strong>if</strong>
    <li>可执行模板中直接写好的任意语句
    <li>支持模板的配置属性
    <li>可通过配置项对象自定义模板方法
    <li>可用于服务端的JavaScript模板 </li>
</ul>
<a name="DataView"></a>
<h3><span class="editsection"><a title="Edit section: DataView" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=34"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">DataView</span></h3>
<p>从表面上看，<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.DataView" href="http://extjs.com/deploy/dev/docs/?class=Ext.DataView" rel="nofollow">DataView</a>跟1.x的View类非常相似。两者都支持模版数据渲染，Data store数据绑定和内建的选区模型和事件。但是， 随着2.0新架构的设计，DataView赋予了更强大的功能。 下面是这次最重要的改动：</p>
<ul>
    <li><strong>继承自BoxComponent</strong><br />
    1.x View类继承自Observable, 作为独立组件而言工作不错， 但是它并没提供内建的机制与其他组件融合的能力。而DataView就是针对这种不足作出的改进，该类从BoxComponent继承，因此<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#Component_Overview">如前文所述</a>，也具备一般组件的生存周期控制。
    <li><strong>发挥了XTemplate之功效</strong><br />
    1.x View类采用了1.x本身的模版类Template 。较好满足了view自身的需求，但是难以满足一些复杂的渲染任务。DataView采用的模版类也升级到2.0的<a title="" href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29#XTemplate">XTemplate</a>，可轻松定制UI应付复杂的数据。
    <li><strong>新增的配置选项</strong><br />
    DataView 提供了更为灵活的－几个新选项：
    <ul>
        <li><strong>itemSelector:</strong> 必须是一个DomQuery选择符告知该类究竟如何分辨出每个item。相比1.x的做法带来更高的灵活性和更高的速度。
        <li><strong>simpleSelect:</strong> 一种新的选区生成模式，使得用户无须按下Shift或Ctrl键便可进行多选。
        <li><strong>overClass:</strong> 一个CSS的样式类，每个元素onmouseover和onmouseout时生效。
        <li><strong>loadingText:</strong>像其他绑定store的Ext组件一样，DataView支持标准的遮罩效果。 </li>
    </ul>
    </li>
</ul>
<a name=".E5.85.B6.E5.AE.83.E6.96.B0.E7.BB.84.E4.BB.B6"></a>
<h3><span class="editsection"><a title="Edit section: 其它新组件" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=35"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">其它新组件</span></h3>
<p>一些有趣的新组件也加入到2.0中去了。要了解这些新组件到底有什么新功能，最好还是看看API文档完整的介绍。</p>
<a name=".E5.8A.A8.E4.BD.9C_Action"></a>
<h4><span class="editsection"><a title="Edit section: 动作 Action" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=36"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">动作 Action</span></h4>
<p>动作Action是一种从组件中抽象出来的可复用的&#8220;功能块&#8221;，即多个组件之间的同一功能都来自这个ACTION的实现。动作允许你共享句柄（handlers），配置选项和UI的更新，所有组件均支持动作的接口（主要是Toolbar，Button和 Menu组件）。 详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Action" href="http://extjs.com/deploy/dev/docs/?class=Ext.Action" rel="nofollow">API文档</a>。</p>
<a name="CycleButton"></a>
<h4><span class="editsection"><a title="Edit section: CycleButton" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=37"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">CycleButton</span></h4>
<p>这是一个包含复选元素菜单的特制的SplitButton。当菜单子项每次被单击，按钮都会轮回一次状态，触发change的事件（或调用按钮的changeHandler函数，如果有的话）以激活菜单项。 FeedViewer演示程序就包含了该例子— 预览窗口地址的那个按钮就是一个SplitButton。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.CycleButton" href="http://extjs.com/deploy/dev/docs/?class=Ext.CycleButton" rel="nofollow">API文档</a>。</p>
<a name="Hidden_.28field.29"></a>
<h4><span class="editsection"><a title="Edit section: Hidden (field)" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=38"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Hidden (field)</span></h4>
<p>这个便是HTML表单中隐藏域的一个简单的实现，能够以EXT FORM组件般操控。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.Hidden" href="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 class="editsection"><a title="Edit section: 进度条 ProgressBar" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=39"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">进度条 ProgressBar</span></h4>
<p>1.x中的进度条是简单地内建在MessageBox类中。现在已重构为单独的器件并有进一步的改进。它支持两种不同的模式（手动和自动进度），而且LOOK and FEEL方面可轻松制定。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.ProgressBar" href="http://extjs.com/deploy/dev/docs/?class=Ext.ProgressBar" rel="nofollow">API参考</a>。</p>
<a name="TimeField"></a>
<h4><span class="editsection"><a title="Edit section: TimeField" href="http://extjs.com/learn/w/index.php?title=Ext_2_Overview_%28Chinese%29&amp;action=edit&amp;section=40"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">TimeField</span></h4>
<p>这是下拉列表时间选取器的简单实现。详细在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.form.TimeField" href="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 class="printfooter">Retrieved from "<a href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29">http://extjs.com/learn/Ext_2_Overview_%28Chinese%29</a>"</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/271232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-18 09:42 <a href="http://www.blogjava.net/caizh2009/articles/271232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Firefox使用Firebug中debug</title><link>http://www.blogjava.net/caizh2009/articles/271227.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Mon, 18 May 2009 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/271227.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/271227.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/271227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/271227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/271227.html</trackback:ping><description><![CDATA[<p>Firefox使用Firebug中debug视图下的step into, step over等按钮需要先设置javascript脚本的断点 <br />
debug视图中包括step into和step over等按钮，这些按钮在通常的情况下是无效的，如果需要单步调试javascript代码，可以在相应的javascript代码处设置断点，然后刷新页面。</p>
<p>[Firebug简介] <br />
当前版本：1.05<br />
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.<br />
在您浏览时集成在Firefox中的Firebug能让您对于大量开发工具了如指掌。您可以实时在任何浏览的页面中编辑、调试、监视CSS，HTML和JavaScript。<br />
Visit the Firebug website for documentation, screen shots, and discussion forums:<br />
访问Firebug站点可以获得文档、效果图和讨论论坛。</p>
<p>[Firebug发布网址] <br />
https://addons.mozilla.org/en-US/firefox/addon/1843<br />
[Firebug站点] <br />
http://www.getfirebug.com<br />
[Firebug文档] <br />
http://www.getfirebug.com/docs.html<br />
[Firebug的bug] <br />
http://code.google.com/p/fbug/issues/list<br />
[Firebug视图] <br />
Console 控制台<br />
Script&nbsp; 脚本<br />
DOM&nbsp;&nbsp;&nbsp;&nbsp; 文档对象结构<br />
Net&nbsp;&nbsp;&nbsp;&nbsp; 网络</p>
<p>[Firebug的console API] <br />
console API文档, http://www.getfirebug.com/console.html<br />
console.time()用于计算时间 </p>
<p>[Firebug常见问题] <br />
在FireBug的console对象输出时，需要注意第一个参数被自动识别为格式字符串</p>
<p>Firefox使用Firebug中debug视图下的step into, step over等按钮需要先设置javascript脚本的断点 </p>
<p><br />
文章出处：DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/2007927/74522.html)</p>
<img src ="http://www.blogjava.net/caizh2009/aggbug/271227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-18 09:30 <a href="http://www.blogjava.net/caizh2009/articles/271227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>近期的ext项目总结(转)</title><link>http://www.blogjava.net/caizh2009/articles/270927.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Fri, 15 May 2009 13:16:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/270927.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/270927.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/270927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/270927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/270927.html</trackback:ping><description><![CDATA[<p>最近也终于使用ext做了一个小的web项目。第一次使用ext做项目毕竟经验不足，仅记下一些开发思路和需要注意的地方。</p>
<p>&nbsp;</p>
<p>Ext Js 2.2+Spring 2.5,没有使用struts,hibernate</p>
<p>&nbsp;</p>
<p><strong>1）目录结构</strong> </p>
<p>a）js部分</p>
<p>根目录下建立/js/ext/目录，存放所有和ext相关的js文件。/js/ext/目录下可建立ext相关子目录</p>
<p>/js/ext/adapter/ — 存放适配器jquery,prototype,yui。。。</p>
<p>/js/ext/experimental/ — 存放ext一些未正式推出的组件，可参考ext开发包examples例子部分。</p>
<p>/js/ext/plugins/ — 存放ext扩展组件，例如ext的patch文件，ext主题，扩展组建等等。</p>
<p>/js/ext/resources/ — 不用说了，ext开发包中的resources目录直接拷贝。</p>
<p>/js/ — 目录下可以放一些最常用 的js文件。</p>
<p>/js/ext/ — 目录下放置ext-all.js，ext-base.js，ext-lang-zh_CN.js，ext核心文件；</p>
<p>b）模块部分</p>
<p>根目录下建立/module/文件夹，每个模块在/module/目录下新建文件夹，例如：</p>
<p>/module/comment/ — 评论模块</p>
<p>/module/stat/ — 统计模块</p>
<p>每个模块目录下新建js目录存放当前模块需要引用的js文件，例如/module/comment/js/comment.js</p>
<p>为简化开发不使用struts，直接使用jsp代替struts；每个模块下新建action.jsp替代structs接受</p>
<p>ext ajax请求，action.jsp不负责页面的显示。只负责service层方法调用及请求跳转。</p>
<p>c）权限部分</p>
<p>根目录下直接建一个security目录完事。</p>
<p><strong>2）基本布局及权限</strong> </p>
<p>border布局，center区域使用TabPanel组建增加新的iframe窗口装载系统不同模块。</p>
<p>暂不在意iframe的效率问题，尽可能做到每个系统模块+UI部分的独立。</p>
<p>初始化布局时TabPanel组件中添加默认的欢迎登录页面，解决TabPanel组件添加新窗口时高度增加的bug。</p>
<p>权限系统设计参考spring security建议的数据库设计，项目后期可与spring security整合。</p>
<p><strong>3）用户访问超时</strong> </p>
<p>解决两种情况下的用户访问超时。<br />
a）普通http请求的session超时。<br />
b）异步http请求的session超时，使用ext后大部分的界面刷新都是异步的ajax请求。<br />
<br />
不管是那种类型的http请求总是可以由一个过滤器来捕捉。<br />
分类：普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息，而异步的有。<br />
其实对于常见的ajax框架，header中还有标示自己身份的header信息。<br />
<br />
对于普通的http请求，发现session超时后直接重定向到一个超时页面，显示访问超时。<br />
对于异步http请求，发现session超时后则向请求的response中写入特定的超时头信息，客户端ajax对象检测<br />
头信息，发现有超时状态标志后调用显示超时信息的javascript方法，提示用户访问超时。</p>
<p>&nbsp;</p>
<p>服务器端session超时后在过滤器中为response添加新的头信息，标记该请求超时：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span class="keyword">if</span><span>(r.getHeader(</span><span class="string">"x-requested-with"</span><span>)!=</span><span class="keyword">null</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;r.getHeader(</span><span class="string">"x-requested-with"</span><span>).equalsIgnoreCase(</span><span class="string">"XMLHttpRequest"</span><span>)){&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span class="string">"sessionstatus"</span><span>,</span><span class="string">"timeout"</span><span>);&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="js" style="display: none" name="code">if(r.getHeader("x-requested-with")!=null
&amp;&amp; r.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
response.setHeader("sessionstatus","timeout");
}</pre>
<p>&nbsp;</p>
<p>使用Ext.Ajaxt对象完成异步请求的交互，Ext.Ajax是单实例对象（非常重要，全局单一Ext.Ajax实例！）。<br />
注册Ext.Ajax的requestcomplete事件，每个ajax请求成功后首先响应该事件。在该事件的回调函数里面判断<br />
访问请求是否超时。使用Ext.Ajax对象的好处是，只需要引入一个包含了几行超时处理代码的js文件，就可以<br />
为当前应用增加超时处理功能，原有代码不需要做任何修改。 </p>
<p>&nbsp;</p>
<p>使用Ext.Ajaxt对象完成异步请求交互，假如checkUserSessionStatus是你的回调方法，每个页面引用： </p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span>Ext.Ajax.on(</span><span class="string">'requestcomplete'</span><span>,checkUserSessionStatus,&nbsp;</span><span class="keyword">this</span><span>); &nbsp;&nbsp;</span></span>
    <li><span class="keyword">function</span><span>&nbsp;checkUserSessionStatus(conn,response,options){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//Ext重新封装了response对象 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="keyword">typeof</span><span>&nbsp;response.getResponseHeader.sessionstatus&nbsp;!=&nbsp;</span><span class="string">'undefined'</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//发现请求超时，退出处理代码... </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="js" style="display: none" name="code">Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);
function checkUserSessionStatus(conn,response,options){
//Ext重新封装了response对象
if(typeof response.getResponseHeader.sessionstatus != 'undefined'){
//发现请求超时，退出处理代码...
}
}</pre>
&nbsp;
<p>可以利用的几个特性：<br />
a）所有的ajax请求均带有x-requested-with:XMLHttpRequest头信息<br />
b）Ext.Ajax是单实例对象（非常重要，全局单一Ext.Ajax实例！）<br />
c）注册Ext.Ajax的requestcomplete事件，每个ajax请求成功后首先响应该事件（概念类似spring的aop拦截）。 </p>
<p>&nbsp;</p>
<p>对于其他的ajax框架，解决用户访问请求超时这个问题的思路是类似的。</p>
<p>&nbsp;</p>
<p>在这里推荐一个很实用的Js方法：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span class="keyword">function</span><span>&nbsp;getRootWin(){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;win&nbsp;=&nbsp;window; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(win&nbsp;!=&nbsp;win.parent){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;win&nbsp;=&nbsp;win.parent; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;win; &nbsp;&nbsp;</span></span>
    <li><span>}&nbsp;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="js" style="display: none" name="code">function getRootWin(){
var win = window;
while (win != win.parent){
win = win.parent;
}
return win;
}
</pre>
<p>&nbsp;</p>
<p>通过该方法，可以在一个任意深度的iframe中调用父iframe中的方法。具体到这里就是无论哪一个iframe中的用户访</p>
<p>问请求超时，都可以通过该方法调用最外层iframe中的退出方法，这样便为用户提供了一个统一的访问超时退出的UI</p>
<p>呈现。</p>
<p>&nbsp;</p>
<p><strong>4）系统异常处理</strong> </p>
<p>将实际业务代码中的各种异常封装成IOException, ServletException异常，指定过滤器捕获。其余处理思路同<br />
用户访问超时处理。</p>
<p>&nbsp;</p>
<p><strong>5）添加jquery支持</strong> </p>
<p>使用jquery顺手的且希望在Ext项目中同时使用某些jquery插件的时候，添加jquery支持。</p>
<p>页面head中直接添加：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span>&lt;link&nbsp;rel=</span><span class="string">"stylesheet"</span><span>&nbsp;type=</span><span class="string">"text/css"</span><span>&nbsp;href=</span><span class="string">"/js/ext/resources/css/ext-all.css"</span><span>&nbsp;/&gt; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"/js/ext/adapter/jquery/jquery.js"</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"/js/jquery.cookie.js"</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"/js/ext/adapter/jquery/ext-jquery-adapter.js"</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"/js/ext/ext-base.js"</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"/js/ext/ext-all.js"</span><span>&gt;&lt;/script&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;script&nbsp;type=</span><span class="string">"text/javascript"</span><span>&nbsp;src=</span><span class="string">"/js/ext/ext-lang-zh_CN.js"</span><span>&gt;&lt;/script&gt;&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<pre class="js" style="display: none" name="code">&lt;link rel="stylesheet" type="text/css" href="/js/ext/resources/css/ext-all.css" /&gt;
&lt;script type="text/javascript" src="/js/ext/adapter/jquery/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/jquery.cookie.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/adapter/jquery/ext-jquery-adapter.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/ext-base.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/ext-all.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/ext-lang-zh_CN.js"&gt;&lt;/script&gt;</pre>
<p>&nbsp;</p>
<p><strong>6）修改布局</strong> </p>
<p>常见的布局一般是：header,center,footer,以及一个位于页面左侧的tree menu。其实对于Ext的UI实现来说，</p>
<p>去掉header,footer也不错，因为Ext的UI本来就做得挺好看再加上去掉header及footer后可以为center增加不</p>
<p>少可视区面积，一个页面还可以显示更多的内容。<br />
<br />
应该可以支持这两种布局方式的切换，交给用户选择。<br />
试了几次，在border布局初始化完毕之后再想去掉header,footer区域好像比较麻烦，ext的官方论坛上也说设</p>
<p>计border布局的本意就是应付静态呈现。<br />
但是好像已经有javaeye上的同志实现了动态的border布局呵呵。可以参考一下 <a href="http://nihongye.javaeye.com/blog/222701">EXT2的动态BorderLayout组件</a> 。</p>
<p>&nbsp;</p>
<p><strong>7）更换主题</strong> </p>
<p>去ext的官网上下载各种主题皮肤 <a href="http://extjs.com/blog/2008/03/03/can-ext-be-skinned-of-course/">Themes for Ext 2.0</a> </p>
<p>主题皮肤文件拷贝至本地/js/ext/plugins/theme/css/,/js/ext/plugins/theme/images/ 目录</p>
<p>最好将用户选择的主题配置保存在cookie中，这样用户每次登陆都可以使用相同的界面主题。</p>
<p>Ext主题切换：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span class="keyword">if</span><span>($.cookie(</span><span class="string">'ext.theme'</span><span>)&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;$.cookie(</span><span class="string">'ext.theme'</span><span>)&nbsp;!=&nbsp;</span><span class="string">'default'</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Ext.util.CSS.swapStyleSheet(</span><span class="string">"theme"</span><span>,</span><span class="string">"/js/ext/plugins/theme/css/"</span><span>+$.cookie(</span><span class="string">'ext.theme'</span><span>)); &nbsp;&nbsp;</span></span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="js" style="display: none" name="code">if($.cookie('ext.theme') != null &amp;&amp; $.cookie('ext.theme') != 'default'){
Ext.util.CSS.swapStyleSheet("theme","/js/ext/plugins/theme/css/"+$.cookie('ext.theme'));
}</pre>
<p>&nbsp;</p>
<p><strong>8）添加自定义的toolbar图标</strong> </p>
<p>直接参考javaeye上的这边文章 <a href="http://www.javaeye.com/topic/289010">共享一些Ext的图标</a> 即可，作者提供的图标很好看，使用也非常简单。</p>
<p>&nbsp;</p>
<p><strong>9）生成Excel文档</strong> <br />
最先参考的资料是extjs论坛上面的这篇文章：<a href="http://extjs.com/forum/showthread.php?t=32400">GridPanel directly to Excel.</a> <br />
作者思路不错，就是利用javascript直接读取GridPanel的store数据，然后生成一个描述excel文档的xml数据，最后<br />
再通过一个包含了该xml数据的"data" URL下载该excel。<br />
该方法的好处是通用性比较强，生成的excel文档也不难看，并且是不需要服务器端参与处理的一种纯客户端解决方案。<br />
但是最大的缺点是目前IE7不支持（This needs a browser that supports data URLs. FF, Opera and IE8 will support this.）。<br />
而后发现dojochina网站上的一个用户整理和修改了这个生成excel文档的实现方法。</p>
<div class="quote_title">引用 </div>
<div class="quote_div">以下的几个问题我都已经整理和修改：<br />
1、没有考虑到含有序号和选择框的grid，<br />
2、utf8转换bug.<br />
3、宽度的bug<br />
4、不支持ie6、ie7和Safari</div>
<p>&nbsp;</p>
<p>原文地址：<a href="http://www.dojochina.com/index.php?q=node/1254">官方Grid导出到Excel修正版</a> （作者给出的代码有些小问题，需要略微进行些调整）<br />
<br />
如果是IE浏览器，客户端将以multipart/form-data方式向服务器端提交该xml数据。<br />
原文给出了后台由php实现时的exportexcel.php代码。</p>
<p>&nbsp;</p>
<p>如果后台由java实现，exportexcel.jsp</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span>&lt;%</span><span class="annotation">@page</span><span>&nbsp;</span><span class="keyword">import</span><span>=</span><span class="string">"java.util.Date"</span><span>%&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;%</span><span class="annotation">@page</span><span>&nbsp;</span><span class="keyword">import</span><span>=</span><span class="string">"org.apache.commons.lang.time.DateFormatUtils"</span><span>%&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;%</span><span class="annotation">@page</span><span>&nbsp;</span><span class="keyword">import</span><span>=</span><span class="string">"com.oreilly.servlet.multipart.*"</span><span>%&gt; &nbsp;&nbsp;</span></span>
    <li><span>&lt;% &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span class="string">"application/vnd.ms-excel"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span class="string">"Content-disposition"</span><span>,</span><span class="string">"attachment;filename="</span><span>+ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DateFormatUtils.format(</span><span class="keyword">new</span><span>&nbsp;Date(),</span><span class="string">"yyyyMMddHHmmss"</span><span>))+</span><span class="string">".xls"</span><span>&nbsp;);&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;MultipartParser&nbsp;parse&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;MultipartParser(request,</span><span class="number">1000000000</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Part&nbsp;part&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;maxcount&nbsp;=&nbsp;</span><span class="number">0</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;ParamPart&nbsp;param&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>(</span><span class="keyword">true</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;part&nbsp;=&nbsp;parse.readNextPart(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(part&nbsp;==&nbsp;</span><span class="keyword">null</span><span>&nbsp;||&nbsp;maxcount&gt;</span><span class="number">1000</span><span>) &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">break</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(part.isParam()&nbsp;&amp;&amp;&nbsp;part.getName().equalsIgnoreCase(</span><span class="string">"exportContent"</span><span>)){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;param&nbsp;=&nbsp;(ParamPart)part; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">break</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxcount++; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(param!=</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.getWriter().println(param.getStringValue()); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">else</span><span>{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>%&gt;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">&lt;%@page import="java.util.Date"%&gt;
&lt;%@page import="org.apache.commons.lang.time.DateFormatUtils"%&gt;
&lt;%@page import="com.oreilly.servlet.multipart.*"%&gt;
&lt;%
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","attachment;filename="+
(DateFormatUtils.format(new Date(),"yyyyMMddHHmmss"))+".xls" );
MultipartParser parse = new MultipartParser(request,1000000000);
Part part = null;
int maxcount = 0;
ParamPart param = null;
while(true){
part = parse.readNextPart();
if(part == null || maxcount&gt;1000)
break;
if(part.isParam() &amp;&amp; part.getName().equalsIgnoreCase("exportContent")){
param = (ParamPart)part;
break;
}
maxcount++;
}
if(param!=null){
response.getWriter().println(param.getStringValue());
}else{
;
}
%&gt;</pre>
<p>&nbsp;</p>
<p>这里使用 <a href="http://www.servlets.com/cos/">com.oreilly.servlet</a> 解析multipart/form-data类型数据。<a href="http://www.servlets.com/cos/">com.oreilly.servlet</a> 很适合文件，表单混合提<br />
交、多文件上传的数据解析。</p>
<p>&nbsp;</p>
<p><strong>10）js文件管理</strong> </p>
<p>凡是这种基于javascript的富客户端解决方案一大问题就是js文件太多。每个页面不仅要导入Ext的css,js文件，<br />
还要导入每个页面应用需要的一些js文件，这样管理起来很麻烦。<br />
原来的情况，至少要导入：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Html代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">link</span><span>&nbsp;</span><span class="attribute">rel</span><span>=</span><span class="attribute-value">"stylesheet"</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/css"</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">"/js/ext/resources/css/ext-all.css"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/ext/adapter/jquery/jquery.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/jquery.cookie.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/ext/adapter/jquery/ext-jquery-adapter.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/ext/ext-base.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/ext/ext-all.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/ext/ext-lang-zh_CN.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/extajax.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/exttheme.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<pre class="html" style="display: none" name="code">&lt;link rel="stylesheet" type="text/css" href="/js/ext/resources/css/ext-all.css" /&gt;
&lt;script type="text/javascript" src="/js/ext/adapter/jquery/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/jquery.cookie.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/adapter/jquery/ext-jquery-adapter.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/ext-base.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/ext-all.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/ext/ext-lang-zh_CN.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/extajax.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/js/exttheme.js"&gt;&lt;/script&gt;</pre>
<p>&nbsp;</p>
<p>推荐使用 <a href="http://www.jsloader.com/">JSLoader</a> 管理众多的js，css文件<br />
1，编写一个js文件统一管理支持所有公用css，js文件的动态导入</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span class="comment">//添加jquery支持 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/ext/adapter/jquery/jquery.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/jquery.cookie.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/ext/adapter/jquery/ext-jquery-adapter.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span class="comment">//Ext支持 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadStyleSheet(</span><span class="string">"/js/ext/resources/css/ext-all.css"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/ext/ext-base.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/ext/ext-all.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/ext/ext-lang-zh_CN.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span class="comment">//加载自定义toolbar图标css样式 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadStyleSheet(</span><span class="string">"/js/ext/plugins/icon/css/ext-extend.css"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span class="comment">//加载用户超时,异常处理 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/extajax.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span class="comment">//主题管理 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/exttheme.js"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span class="comment">//Excel导出支持 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>JSLoader.loadJavaScript(</span><span class="string">"/js/ext.excel.js"</span><span>);&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<pre class="js" style="display: none" name="code">//添加jquery支持
JSLoader.loadJavaScript("/js/ext/adapter/jquery/jquery.js");
JSLoader.loadJavaScript("/js/jquery.cookie.js");
JSLoader.loadJavaScript("/js/ext/adapter/jquery/ext-jquery-adapter.js");
//Ext支持
JSLoader.loadStyleSheet("/js/ext/resources/css/ext-all.css");
JSLoader.loadJavaScript("/js/ext/ext-base.js");
JSLoader.loadJavaScript("/js/ext/ext-all.js");
JSLoader.loadJavaScript("/js/ext/ext-lang-zh_CN.js");
//加载自定义toolbar图标css样式
JSLoader.loadStyleSheet("/js/ext/plugins/icon/css/ext-extend.css");
//加载用户超时,异常处理
JSLoader.loadJavaScript("/js/extajax.js");
//主题管理
JSLoader.loadJavaScript("/js/exttheme.js");
//Excel导出支持
JSLoader.loadJavaScript("/js/ext.excel.js");
</pre>
<p>2，每个页面只需要引入：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Html代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/320633#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/jsloader.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"/js/assets.js"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span> </li>
</ol>
http://www.javaeye.com/topic/320633</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/270927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-15 21:16 <a href="http://www.blogjava.net/caizh2009/articles/270927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tutorial:EXT简介 1</title><link>http://www.blogjava.net/caizh2009/articles/270868.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Fri, 15 May 2009 08:24:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/270868.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/270868.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/270868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/270868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/270868.html</trackback:ping><description><![CDATA[<h1 class="firstHeading">Tutorial:Introduction to Ext 2.0 (Chinese)</h1>
<div id="bodyContent">
<h3 id="siteSub">From Learn About the Ext JavaScript Library</h3>
<div id="contentSub"></div>
<div id="jump-to-nav">Jump to: <a href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Chinese%29#column-one">navigation</a>, <a href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Chinese%29#searchInput">search</a></div>
<!-- start content -->
<div class="tutorialSummary">
<table>
    <tbody>
        <tr>
            <td><strong>Summary:</strong> 对Ext库的总体概述并介绍如何完成一些常见的程序任务。新用户应从这里开始。 </td>
        </tr>
        <tr>
            <td><strong>Author:</strong> <a class="external text" title="http://extjs.com/forum/member.php?u=5" href="http://extjs.com/forum/member.php?u=5" rel="nofollow">Brian Moeskau</a>(译者：<a class="external text" title="http://extjs.com/forum/member.php?u=572" href="http://extjs.com/forum/member.php?u=572" rel="nofollow">Frank Cheung</a>) </td>
        </tr>
        <tr>
            <td><strong>Published:</strong> 2007年十一月一日 </td>
        </tr>
        <tr>
            <td><strong>Ext Version:</strong> 2.0 </td>
        </tr>
        <tr>
            <td><strong>Languages:</strong> <span style="white-space: nowrap"><img alt="en.png" src="http://extjs.com/modules/i18n/flags/en.png" /> <a title="Tutorial:Introduction to Ext 2.0" href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0">English</a></span> <span style="white-space: nowrap"><img alt="cn.png" src="http://extjs.com/modules/i18n/flags/cn.png" /> <strong class="selflink">Chinese</strong></span> <span style="white-space: nowrap"><img alt="jp.png" src="http://extjs.com/modules/i18n/flags/jp.png" /> <a title="Tutorial:Introduction to Ext 2.0 (Japanese)" href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Japanese%29">Japanese</a></span>
            <p><span style="white-space: nowrap"><img alt="kr.png" src="http://extjs.com/modules/i18n/flags/kr.png" /> <a title="Tutorial:Introduction to Ext 2.0 (Korean)" href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Korean%29">Korean</a></span> <span style="white-space: nowrap"><img alt="it.png" src="http://extjs.com/modules/i18n/flags/it.png" /> <a title="Tutorial:Introduction to Ext 2.0 (Italian)" href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Italian%29">Italian</a></span> <span style="white-space: nowrap"><img alt="id.png" src="http://extjs.com/modules/i18n/flags/id.png" /> <a title="Tutorial:Introduction to Ext 2.0(Bahasa Indonesia)" href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0%28Bahasa_Indonesia%29">Bahasa Indonesia</a></span> </p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p>本教程适用于Ext 2.0的版本，而<a title="Tutorial:Introduction to Ext" href="http://extjs.com/learn/Tutorial:Introduction_to_Ext">版本1.x</a>仍可找到。 </p>
<p>无论你是Ext库的新手，抑或是想了解Ext的人，本篇文章的内容都适合你。本文将简单地介绍Ext的几个基本概念，和如何快速地做出一个动态的页面并运行起来，假设读者已具备了一些JavaScript经验和简单了解HTML的文档对象模型（document object model ，DOM）。 </p>
<a name=".E4.B8.8B.E8.BD.BDExt"></a>
<h3><span class="editsection"><a title="Edit section: 下载Ext" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=1"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">下载Ext</span></h3>
<p>如果你未曾下载过，那应从官方网站那里下载最新版本的Ext <a class="external free" title="http://extjs.com/downloads" href="http://extjs.com/downloads" rel="nofollow">http://extjs.com/downloads</a> 。</p>
<p>因应各种的下载需求，有几种不同的可选项。通常地，最稳定的版本，是较多人的选择。下载解包后，那个<strong>example</strong>文件夹便是一个探索Ext的好地方！</p>
<a name=".E5.BC.80.E5.A7.8B.EF.BC.81"></a>
<h3><span class="editsection"><a title="Edit section: 开始！" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=2"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">开始！</span></h3>
<table style="border-right: #2f6fab 1px solid; border-top: #2f6fab 1px solid; background: #f9f9f9; float: right; margin: 10px; border-left: #2f6fab 1px solid; border-bottom: #2f6fab 1px solid">
    <tbody>
        <tr>
            <td><strong>下载示例文件</strong>
            <ul>
                <li><tt><a class="external text" title="http://extjs.com/downloads/tutorial/introduction-ext/IntroToExt2.zip" href="http://extjs.com/downloads/tutorial/introduction-ext/IntroToExt2.zip" rel="nofollow">IntroToExt2.zip</a></tt> </li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<p><br />
</p>
<p>我们将讲讲怎么使用Ext，来完成一些JavaScript常见的任务。如果你想自己试试，就应该先下<tt><a class="external text" title="http://extjs.com/downloads/tutorial/introduction-ext/IntroToExt2.zip" href="http://extjs.com/downloads/tutorial/introduction-ext/IntroToExt2.zip" rel="nofollow">IntroToExt2.zip</a></tt> ，用来构建已下面的Ext代码。</p>
<p>Zip包里有三个文件：<strong>ExtStart.html</strong>, <strong>ExtStart.js</strong>和<strong>ExtStart.css</strong>。解包这三个文件到Ext的安装目录中（例如，Ext是在&#8220;C:\code\Ext\v2.0&#8221;中，那应该在"v2.0"里面新建目录&#8220;tutorial&#8221;。双击<strong>ExtStart.htm</strong>，接着你的浏览器打开启动页面，应该会有一条消息告诉你配置已完毕。如果出现了Javascript错误，请按照页面上的指引操作。</p>
<p>现在在你常用的IDE中或文本编辑器中，打开ExtStart.js看看。</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">alert</span><span class="br0">(</span><span class="st0">"Congratulations!  You have Ext configured correctly!"</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>Ext.onReady可能是你接触的第一个也可能是在每个页面都要使用的方法。这个方法会在DOM加载全部完毕后，保证页面内的所有元素能被Script引用（reference）之后调用。你可删除alert()那行，加入一些实际用途的代码试试。</p>
<a name="Element.EF.BC.9AExt.E7.9A.84.E6.A0.B8.E5.BF.83"></a>
<h3><span class="editsection"><a title="Edit section: Element：Ext的核心" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=3"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Element：Ext的核心</span></h3>
<p>大多数的JavaScript操作都需要先获取页面上的某个元素的引用（reference）,好让你来做些实质性的事情。传统的JavaScript做法，是通过ID获取Dom节点的：</p>
<pre class="source source-javascript"><span class="kw2">var</span> myDiv = document.<span class="me1">getElementById</span><span class="br0">(</span><span class="st0">'myDiv'</span><span class="br0">)</span>;</pre>
<p>这毫无问题，不过这样单单返回一个对象（DOM节点），用起来并不是太实用和方便。为了要用那节点干点事情，你还将要手工编写不少的代码；另外，对于不同类型浏览器之间的差异，要处理起来可真头大了。</p>
<p>进入Ext.element 对象。元素（element）的的确确是Ext的心脏地带，--无论是访问元素（elements）还是完成一些其他动作，都要涉及它。Element的API是整个Ext库的基础，如果你时间不多，只是想了解Ext中的一两个类的话，Element一定是首选！</p>
<p>由ID获取一个Ext Element 的相应代码如下（首页ExtStart.htm 包含一个ID为&#8220;myDiv&#8221;的 div，然后，在ExtStart.js中加入下列语句）： 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): </p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw2">var</span> myDiv = Ext.<span class="me1">get</span><span class="br0">(</span><span class="st0">'myDiv'</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>再回头看看Element对象，发现什么有趣的东东呢？</p>
<ul>
    <li>Element包含了常见的DOM方法和属性，提供一个快捷的、统一的、跨浏览器的接口（若使用Element.dom的话，就可以直接访问底层DOM的节点。）；
    <li>Element.get()方法提供内置缓存（Cache），多次访问同一对象效率上有极大优势；
    <li>内置常用的DOM节点的动作，并且是跨浏览器的定位的位置、大小、动画、拖放等等（添加/移除 CSS 类, 添加/移除事件处理程序, 定位, 改变大小, 动画, 拖放）。 </li>
</ul>
<p>这意味着你可用少量的代码来做各种各样的事情，这里仅仅是一个简单的例子（完整的列表在<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Element" href="http://extjs.com/deploy/dev/docs/?class=Ext.Element" rel="nofollow">Element API 文档</a>中）。</p>
<p>继续在ExtStart.js中，在刚才我们获取好myDiv的位置中加入：</p>
<pre class="source source-javascript">myDiv.<span class="me1">highlight</span><span class="br0">(</span><span class="br0">)</span>;      <span class="co1">//黄色高亮显示然后渐退</span>
myDiv.<span class="me1">addClass</span><span class="br0">(</span><span class="st0">'red'</span><span class="br0">)</span>;  <span class="co1">// 添加自定义CSS类 (在ExtStart.css定义)</span>
myDiv.<span class="me1">center</span><span class="br0">(</span><span class="br0">)</span>;         <span class="co1">//在视图中将元素居中</span>
myDiv.<span class="me1">setOpacity</span><span class="br0">(</span>.<span class="nu0">25</span><span class="br0">)</span>;  <span class="co1">// 使元素半透明</span></pre>
<a name=".E8.8E.B7.E5.8F.96.E5.A4.9A.E4.B8.AADOM.E7.9A.84.E8.8A.82.E7.82.B9"></a>
<h3><span class="editsection"><a title="Edit section: 获取多个DOM的节点" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=4"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">获取多个DOM的节点</span></h3>
<p>通常情况下，想获取多个DOM的节点，难以依靠ID的方式来获取。有可能因为没设置ID,或者你不知道ID,又或者直接用ID方式引用有太多元素了。这种情况下，你就会不用ID来作为获取元素的依据，可能会用属性（attribute）或CSS Classname代替。基于以上的原因，Ext引入了一个异常强大的Dom Selector库，叫做DomQuery。</p>
<p><a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.DomQuery" href="http://extjs.com/deploy/dev/docs/?class=Ext.DomQuery" rel="nofollow">DomQuery</a>可作为单独的库使用，但常用于Ext，你可以在上下文环境中（Context）获取多个元素，然后通过Element接口调用。令人欣喜的是，Element对象本身便有Element.select的方法来实现查询，即内部调用DomQuery选取元素。这个简单的例子中，ExtStart.htm包含若干段落（&lt;p&gt;标签），没有一个是有ID的，而你想轻松地通过一次操作马上获取每一段，全体执行它们的动作，可以这样做：</p>
<pre class="source source-javascript"><span class="co1">// 每段高亮显示</span>
Ext.<span class="me1">select</span><span class="br0">(</span><span class="st0">'p'</span><span class="br0">)</span>.<span class="me1">highlight</span><span class="br0">(</span><span class="br0">)</span>;</pre>
<p>Element.select在这个例子中的方便性显露无疑。它返回一个<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.CompositeElement" href="http://extjs.com/deploy/dev/docs/?class=Ext.CompositeElement" rel="nofollow">复合元素</a>，能通过元素接口（Element interface）访问每个元素。这样做的好处是可不用循环和不分别访问每一个元素。 </p>
<p>DomQuery的选取参数可以是一段较长的数组，其中包括W3C CSS3 Dom选取器、基本XPatch、HTML属性和更多，请参阅<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.DomQuery" href="http://extjs.com/deploy/dev/docs/?class=Ext.DomQuery" rel="nofollow">DomQuery API文档</a>以了解这功能强大的库个中细节。</p>
<a name=".E5.93.8D.E5.BA.94.E4.BA.8B.E4.BB.B6"></a>
<h3><span class="editsection"><a title="Edit section: 响应事件" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=5"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">响应事件</span></h3>
<p>到这范例为止，我们所写的代码都是放在onReady中，即当页面加载后总会立即执行，功能较单一——这样的话，你便知道，如何响应某个动作或事件来执行你希望做的事情，做法是，先分配一个function，再定义一个event handler事件处理器来响应。我们由这个简单的范例开始，打开ExtStart.js，编辑下列的代码：</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
Ext.<span class="me1">get</span><span class="br0">(</span><span class="st0">'myButton'</span><span class="br0">)</span>.<span class="me1">on</span><span class="br0">(</span><span class="st0">'click'</span>, <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span>
<span class="kw3">alert</span><span class="br0">(</span><span class="st0">"你单击了按钮"</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>代码依然会加载好页面后执行，不过重要的区别是，包含alert()的function是已定义好的，但它不会立即地被执行，是分配到按钮的单击事件中。用浅显的文字解释，就是：获取ID为'myDottom'元素的引用，监听任何发生这个元素上被单击的情况，并分配一个function,以准备任何单击元素的情况。</p>
<p>一般来说，Element.select也能做同样的事情，即作用在获取一组元素上。下一例中，演示了页面中的某一段落被单击后，便有弹出窗口：</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
Ext.<span class="me1">select</span><span class="br0">(</span><span class="st0">'p'</span><span class="br0">)</span>.<span class="me1">on</span><span class="br0">(</span><span class="st0">'click'</span>, <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">alert</span><span class="br0">(</span><span class="st0">"你单击了一段落;"</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>这两个例子中，事件处理的function均是简单几句，没有函数的名称，这种类型函数称为&#8220;匿名函数（anonymous function）&#8221;，即是没有名的的函数。你也可以分配一个有名字的event handler,这对于代码的重用或多个事件很有用。下一例等效于上一例：</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw2">var</span> paragraphClicked = <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">alert</span><span class="br0">(</span><span class="st0">"你单击了一段落;"</span><span class="br0">)</span>;
<span class="br0">}</span>
Ext.<span class="me1">select</span><span class="br0">(</span><span class="st0">'p'</span><span class="br0">)</span>.<span class="me1">on</span><span class="br0">(</span><span class="st0">'click'</span>, paragraphClicked<span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>到目前为止，我们已经知道如何执行某个动作。但当事件触发时，我们如何得知这个event handler执行时是作用在哪一个特定的元素上呢？要明确这一点非常简单，Element.on方法传入到even handler的function中（我们这里先讨论第一个参数，不过你应该浏览API文档以了解even handler更多的细节）。在我们之前的例子中，function是忽略这些参数的，到这里可有少许的改变，——我们在功能上提供了更深层次的控制。必须先说明的是，这实际上是Ext的事件对象（event object）,一个跨浏览器和拥有更多控制的事件的对象。例如，可以用下列的语句，得到这个事件响应所在的DOM节点：<br />
</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw2">var</span> paragraphClicked = <span class="kw2">function</span><span class="br0">(</span>e<span class="br0">)</span> <span class="br0">{</span>
Ext.<span class="me1">get</span><span class="br0">(</span>e.<span class="me1">target</span><span class="br0">)</span>.<span class="me1">highlight</span><span class="br0">(</span><span class="br0">)</span>;
<span class="br0">}</span>
Ext.<span class="me1">select</span><span class="br0">(</span><span class="st0">'p'</span><span class="br0">)</span>.<span class="me1">on</span><span class="br0">(</span><span class="st0">'click'</span>, paragraphClicked<span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>注意得到的e.target是DOM节点，所以我们首先将其转换成为EXT的Elemnet元素，然后执行欲完成的事件，这个例子中，我们看见段落是高亮显示的。<br />
</p>
<a name=".E4.BD.BF.E7.94.A8Widgets"></a>
<h3><span class="editsection"><a title="Edit section: 使用Widgets" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=6"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">使用Widgets</span></h3>
<pre> (Widget原意为&#8220;小器件&#8221;，现指页面中UI控件)
</pre>
<p>除了我们已经讨论过的核心JavaScript库，当前的Ext亦包括了一系列的最前端的JavaScirptUI组件库。文本以一些常用的widget为例子，作简单的介绍。</p>
<a name="MessageBox"></a>
<h4><span class="editsection"><a title="Edit section: MessageBox" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=7"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">MessageBox</span></h4>
<p>比起略为沉闷的&#8220;HelloWolrd&#8221;消息窗口，我们做少许变化，前面我们写的代码是，单击某个段落便会高亮显示，现在是单击段落，在消息窗口中显示段落内容出来。<br />
在上面的paragraphClicked的function中，将这行代码： </p>
<pre class="source source-javascript">Ext.<span class="me1">get</span><span class="br0">(</span>e.<span class="me1">target</span><span class="br0">)</span>.<span class="me1">highlight</span><span class="br0">(</span><span class="br0">)</span>;</pre>
<p>替换为：</p>
<pre class="source source-javascript"><span class="kw2">var</span> paragraph = Ext.<span class="me1">get</span><span class="br0">(</span>e.<span class="me1">target</span><span class="br0">)</span>;
paragraph.<span class="me1">highlight</span><span class="br0">(</span><span class="br0">)</span>;
Ext.<span class="me1">MessageBox</span>.<span class="me1">show</span><span class="br0">(</span><span class="br0">{</span>
title: <span class="st0">'Paragraph Clicked'</span>,
msg: paragraph.<span class="me1">dom</span>.<span class="me1">innerHTML</span>,
width:<span class="nu0">400</span>,
buttons: Ext.<span class="me1">MessageBox</span>.<span class="me1">OK</span>,
animEl: paragraph
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>这里有些新的概念需要讨论一下。在第一行中我们创建了一个局部变量（Local Variable）来保存某个元素的引用，即被单击的那个DOM节点（本例中，DOM节点指的是段落paragrah,事因我们已经定义该事件与&lt;p&gt;标签发生关联的了）。为什么要这样做呢？嗯...观察上面的代码，我们需要引用同一元素来高亮显示，在MessageBox中也是引用同一元素作为参数使用。<br />
一般来说，多次重复使用同一值（Value）或对象，是一个不好的方式，所以，作为一个具备良好OO思维的开发者，应该是将其分配到一个局部变量中，反复使用这变量！</p>
<p>现在，为了我们接下来阐述新概念的演示，请观察MessageBox的调用。乍一看，这像一连串的参数传入到方法中，但仔细看，这是一个非常特别的语法。实际上，传入到MessageBox.show的只有一个参数：一个Object literal（对象字面化）,包含一组属性和属性值。在Javascript中，对象字面化是动态的，你可在任何时候用{和}创建一个典型的对象(object)。其中的字符由一系列的name/value组成的属性，属性的格式是[property name]:[property value]。在整个Ext中，你将会经常遇到这种语法，因此你应该马上消化并吸收这个知识点！<br />
使用对象字面化Object Literal的原因是什么呢？主要的原因是&#8220;灵活性、可伸缩性（flexibility）&#8221;的考虑"，随时可新增、删除属性，亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下，为最终开发者带来不少的方便（本例中的MessageBox.show())。例如，我们说这儿的foo.action方法，有四个参数，而只有一个是你必须传入的。本例中，你想像中的代码可能会是这样的foo.action(null, null, null, 'hello').,若果那方法用Object Literal来写，却是这样， foo.action({ param4: 'hello' })，这更易用和易读。</p>
<a name="Grid"></a>
<h4><span class="editsection"><a title="Edit section: Grid" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=8"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Grid</span></h4>
<p>Grid是Ext中人们最想先睹为快的和最为流行Widgets之一。好，让我们看看怎么轻松地创建一个Grid并运行。用下列代码替换ExtStart.js中全部语句：</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw2">var</span> myData = <span class="br0">[</span>
<span class="br0">[</span><span class="st0">'Apple'</span>,<span class="nu0">29.89</span>,<span class="nu0">0.24</span>,<span class="nu0">0.81</span>,<span class="st0">'9/1 12:00am'</span><span class="br0">]</span>,
<span class="br0">[</span><span class="st0">'Ext'</span>,<span class="nu0">83.81</span>,<span class="nu0">0.28</span>,<span class="nu0">0.34</span>,<span class="st0">'9/12 12:00am'</span><span class="br0">]</span>,
<span class="br0">[</span><span class="st0">'Google'</span>,<span class="nu0">71.72</span>,<span class="nu0">0.02</span>,<span class="nu0">0.03</span>,<span class="st0">'10/1 12:00am'</span><span class="br0">]</span>,
<span class="br0">[</span><span class="st0">'Microsoft'</span>,<span class="nu0">52.55</span>,<span class="nu0">0.01</span>,<span class="nu0">0.02</span>,<span class="st0">'7/4 12:00am'</span><span class="br0">]</span>,
<span class="br0">[</span><span class="st0">'Yahoo!'</span>,<span class="nu0">29.01</span>,<span class="nu0">0.42</span>,<span class="nu0">1.47</span>,<span class="st0">'5/22 12:00am'</span><span class="br0">]</span>
<span class="br0">]</span>;
&nbsp;
<span class="kw2">var</span> myReader = <span class="kw2">new</span> Ext.<span class="me1">data</span>.<span class="me1">ArrayReader</span><span class="br0">(</span><span class="br0">{</span><span class="br0">}</span>, <span class="br0">[</span>
<span class="br0">{</span><span class="kw3">name</span>: <span class="st0">'company'</span><span class="br0">}</span>,
<span class="br0">{</span><span class="kw3">name</span>: <span class="st0">'price'</span>, type: <span class="st0">'float'</span><span class="br0">}</span>,
<span class="br0">{</span><span class="kw3">name</span>: <span class="st0">'change'</span>, type: <span class="st0">'float'</span><span class="br0">}</span>,
<span class="br0">{</span><span class="kw3">name</span>: <span class="st0">'pctChange'</span>, type: <span class="st0">'float'</span><span class="br0">}</span>,
<span class="br0">{</span><span class="kw3">name</span>: <span class="st0">'lastChange'</span>, type: <span class="st0">'date'</span>, dateFormat: <span class="st0">'n/j h:ia'</span><span class="br0">}</span>
<span class="br0">]</span><span class="br0">)</span>;
&nbsp;
<span class="kw2">var</span> grid = <span class="kw2">new</span> Ext.<span class="me1">grid</span>.<span class="me1">GridPanel</span><span class="br0">(</span><span class="br0">{</span>
store: <span class="kw2">new</span> Ext.<span class="me1">data</span>.<span class="me1">Store</span><span class="br0">(</span><span class="br0">{</span>
data: myData,
reader: myReader
<span class="br0">}</span><span class="br0">)</span>,
columns: <span class="br0">[</span>
<span class="br0">{</span>header: <span class="st0">"Company"</span>, width: <span class="nu0">120</span>, sortable: <span class="kw2">true</span>, dataIndex: <span class="st0">'company'</span><span class="br0">}</span>,
<span class="br0">{</span>header: <span class="st0">"Price"</span>, width: <span class="nu0">90</span>, sortable: <span class="kw2">true</span>, dataIndex: <span class="st0">'price'</span><span class="br0">}</span>,
<span class="br0">{</span>header: <span class="st0">"Change"</span>, width: <span class="nu0">90</span>, sortable: <span class="kw2">true</span>, dataIndex: <span class="st0">'change'</span><span class="br0">}</span>,
<span class="br0">{</span>header: <span class="st0">"% Change"</span>, width: <span class="nu0">90</span>, sortable: <span class="kw2">true</span>, dataIndex: <span class="st0">'pctChange'</span><span class="br0">}</span>,
<span class="br0">{</span>header: <span class="st0">"Last Updated"</span>, width: <span class="nu0">120</span>, sortable: <span class="kw2">true</span>,
renderer: Ext.<span class="me1">util</span>.<span class="me1">Format</span>.<span class="me1">dateRenderer</span><span class="br0">(</span><span class="st0">'m/d/Y'</span><span class="br0">)</span>,
dataIndex: <span class="st0">'lastChange'</span><span class="br0">}</span>
<span class="br0">]</span>,
viewConfig: <span class="br0">{</span>
forceFit: <span class="kw2">true</span>
<span class="br0">}</span>,
renderTo: <span class="st0">'content'</span>,
title: <span class="st0">'My First Grid'</span>,
width: <span class="nu0">500</span>,
frame: <span class="kw2">true</span>
<span class="br0">}</span><span class="br0">)</span>;
&nbsp;
grid.<span class="me1">getSelectionModel</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">selectFirstRow</span><span class="br0">(</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p>这看上去很复杂，但实际上加起来，只有<strong>四行</strong>代码（不包含测试数据的代码）。 </p>
<ul>
    <li>第一行创建数组并作为数据源。实际案例中，你很可能从数据库、或者WebService那里得到动态的数据。
    <li>接着，我们创建并加载data store， data store将会告诉Ext的底层库接手处理和格式化这些数据。不同的数据类型须在类Reader中指明。
    <li>接着，我们创建一个Grid的组件，传入各种的配置值，有：
    <ul>
        <li>新的data store, 配置好测试数据和reader
        <li>列模型column model定义了 <tt>列columns</tt>的配置
        <li>其他的选择指定了Grid所需的功能 </li>
    </ul>
    <li>最后，通过SelectionModel告诉Grid高亮显示第一行。 </li>
</ul>
<p>不是太困难吧？如果一切顺利，完成之后你会看到像这样的： </p>
<p style="margin-left: 50px"><a class="image" title="Image:IntroToExt2_grid.gif" href="http://extjs.com/learn/Image:IntroToExt2_grid.gif"><img height="173" alt="Image:IntroToExt2_grid.gif" src="http://extjs.com/learn/w/images/9/90/IntroToExt2_grid.gif" width="506" longdesc="/learn/Image:IntroToExt2_grid.gif" /></a></p>
<p>当然，你现在还未掌握这段代码的某些细节，但先不要紧，这个例子的目的是告诉你，只要学习了少量的几行代码，创建一个富界面的多功能的UI组件是可能的。更多的grid细节读者可作为一种练习去学习。这儿有许多学习Grid的资源，Ext Grid教程、<a class="external text" title="http://extjs.com/deploy/dev/examples/" href="http://extjs.com/deploy/dev/examples/" rel="nofollow">Grid交互演示</a>交和<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.grid.GridPanel" href="http://extjs.com/deploy/dev/docs/?class=Ext.grid.GridPanel" rel="nofollow">Grid API文档</a>。 </p>
<a name=".E8.BF.98.E6.9C.89.E6.9B.B4.E5.A4.9A.E7.9A.84.."></a>
<h4><span class="editsection"><a title="Edit section: 还有更多的.." href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=9"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">还有更多的..</span></h4>
<p>这只是其中一部分。还有一打的UI Widgets可以供调用，如 layouts, tabs, menus, toolbars, dialogs, tree view等等。请探索 <a class="external text" title="http://extjs.com/deploy/dev/examples/" href="http://extjs.com/deploy/dev/examples/" rel="nofollow">范例演示</a>。 </p>
<a name=".E4.BD.BF.E7.94.A8Ajax"></a>
<h3><span class="editsection"><a title="Edit section: 使用Ajax" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=10"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">使用Ajax</span></h3>
<p>在弄好一些页面后，你已经懂得在页面和脚本之间的交互（interact）原理。接下来，你应该掌握的是，怎样与远程服务器（remote server）交换数据，常见的是从数据库加载数据（load）或是保存数据（save）到数据库中。通过JavaScript异步无刷新交换数据的这种方式，就是所谓的Ajax。Ext内建卓越的Ajax支持，例如，一个普遍的用户操作就是，异步发送一些东西到服务器，然后，UI元素根据回应（Response）作出更新。这是一个包含text input的表单，一个div用于显示消息（注意，你可以在ExtStart.html中加入下列代码，但这必须要访问服务器）：</p>
<pre class="source source-html4strict"><span class="sc2"><span class="kw2">&lt;div</span> <span class="kw3">id</span>=<span class="st0">"msg"</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;div&gt;</span></span>
Name: <span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">type</span>=<span class="st0">"text"</span> <span class="kw3">id</span>=<span class="st0">"name"</span> /<span class="kw2">&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;input</span> <span class="kw3">type</span>=<span class="st0">"button"</span> <span class="kw3">id</span>=<span class="st0">"okButton"</span> <span class="kw3">value</span>=<span class="st0">"OK"</span> /<span class="kw2">&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;/div&gt;</span></span>
<span class="sc2"><span class="kw2">&lt;div</span> <span class="kw3">id</span>=<span class="st0">"msg"</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span></pre>
<p>接着，我们加入这些处理交换数据的JavaScript代码到文件ExtStart.js中(用下面的代码覆盖)：</p>
<p><br />
</p>
<pre class="source source-javascript">Ext.<span class="me1">onReady</span><span class="br0">(</span><span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span>
Ext.<span class="me1">get</span><span class="br0">(</span><span class="st0">'okButton'</span><span class="br0">)</span>.<span class="me1">on</span><span class="br0">(</span><span class="st0">'click'</span>, <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{</span>
<span class="kw2">var</span> msg = Ext.<span class="me1">get</span><span class="br0">(</span><span class="st0">'msg'</span><span class="br0">)</span>;
msg.<span class="me1">load</span><span class="br0">(</span><span class="br0">{</span>
url: <span class="st0">'ajax-example.php'</span>, <span class="co1">// &lt;-- 按实际改动</span>
params: <span class="st0">'name='</span> + Ext.<span class="me1">get</span><span class="br0">(</span><span class="st0">'name'</span><span class="br0">)</span>.<span class="me1">dom</span>.<span class="me1">value</span>,
text: <span class="st0">'Updating...'</span>
<span class="br0">}</span><span class="br0">)</span>;
msg.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;
<span class="br0">}</span><span class="br0">)</span>;</pre>
<p><strong>注意：</strong> 这个例子需要web server才可运行。 浏览器的URL地址不应是以<em>file://</em>开头，而是<em>http://</em>开头，否则的话Ajax的数据交互将不会工作。Localhost就可以工作得很好，但必须是通过http的。 </p>
<p>这种模式看起来已经比较熟悉了吧！先获取按钮元素，加入一个匿名函数监听单击。在事件处理器中（event handler），我们使用一个负责处理Ajax请求、接受响应（Response）和更新另一个元素的Ext内建类，称作UpdateManager<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Updater" href="http://extjs.com/deploy/dev/docs/?class=Ext.Updater" rel="nofollow">Updater</a>。UpdateManager可以直接使用，或者和我们现在的做法一样，通过Element的load方法来引用（本例中该元素是id为&#8220;msg&#8220;的div）。当使用<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Element&amp;member=load" href="http://extjs.com/deploy/dev/docs/?class=Ext.Element&amp;member=load" rel="nofollow">Element.load</a>方法，请求（request)会在加工处理后发送，等待服务器的响应（Response），来自动替换元素的innerHTML。简单传入服务器url地址，加上字符串参数，便可以处理这个请求（本例中，参数值来自&#8220;name&#8221;元素的value),而text值是请求发送时提示的文本，完毕后显示那个msg的div（因为开始时默认隐藏）。当然，和大多数Ext组件一样，<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.Ajax" href="http://extjs.com/deploy/dev/docs/?class=Ext.Ajax" rel="nofollow">Ext.Ajax</a> 有许多的参数可选，不同的Ajax请求有不同的方案。而这里仅演示最简单的那种。</p>
<p><br />
</p>
<p>最后一个关于Ajax隐晦的地方就是，服务器实际处理请求和返回（Resposne）是具体过程。这个过程会是一个服务端页面，一个Servlet，一个Http调度过程，一个WebService,甚至是Perl或CGI脚本，即不指定一个服务器都可以处理的http请求。让人无法预料的是，服务器返回什么是服务器的事情，无法给一个标准的例子来覆盖阐述所有的可能性。。</p>
<p>下面的例子是一些常见的语言以方便开始测试(这段代码输出刚才我们传入'name'的那个值到客户端，即发送什么，返回什么，然后在我们刚才写的'msg' div中加入该文本）。PHP的已经包含在下载文件中，文件名为'ajax-example.php'，可换成你自己服务端的代码： </p>
<a name="Plain_PHP"></a>
<h4><span class="editsection"><a title="Edit section: Plain PHP" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=11"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Plain PHP</span></h4>
<pre class="source source-php"><span class="kw2">&lt;?php</span> <span class="kw1">if</span><span class="br0">(</span><span class="kw3">isset</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">'name'</span><span class="br0">]</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">echo</span> <span class="st0">'From Server: '</span>.<span class="re0">$_POST</span><span class="br0">[</span><span class="st0">'name'</span><span class="br0">]</span>;
<span class="br0">}</span>
<span class="kw2">?&gt;</span></pre>
<a name="CakePHP"></a>
<h4><span class="editsection"><a title="Edit section: CakePHP" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=12"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">CakePHP</span></h4>
<pre class="source source-php"><span class="kw2">&lt;?php</span> <span class="kw1">if</span><span class="br0">(</span><span class="kw3">isset</span><span class="br0">(</span><span class="re0">$this</span>-&gt;<span class="me1">data</span><span class="br0">[</span><span class="st0">'name'</span><span class="br0">]</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
<span class="re0">$this</span>-&gt;<span class="me1">flash</span><span class="br0">(</span><span class="st0">'From Server: '</span>.<span class="re0">$this</span>-&gt;<span class="me1">data</span><span class="br0">[</span><span class="st0">'name'</span><span class="br0">]</span><span class="br0">)</span>;
<span class="br0">}</span>
<span class="kw2">?&gt;</span></pre>
<a name="Django"></a>
<h4><span class="editsection"><a title="Edit section: Django" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=13"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Django</span></h4>
<pre class="source source-python"><span class="kw1">from</span> django.<span class="me1">http</span> <span class="kw1">import</span> HttpResponse
&nbsp;
<span class="kw1">def</span> ajax_request<span class="br0">(</span>request<span class="br0">)</span>:
<span class="kw1">return</span> HttpResponse<span class="br0">(</span><span class="st0">'From Server: %s'</span> % request.<span class="me1">POST</span>.<span class="me1">get</span><span class="br0">(</span><span class="st0">'name'</span>, <span class="st0">'nada'</span><span class="br0">)</span><span class="br0">)</span></pre>
<a name="Perl"></a>
<h4><span class="editsection"><a title="Edit section: Perl" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=14"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">Perl</span></h4>
<pre class="source source-perl"><span class="co1">#!/usr/bin/perl</span>
<span class="kw2">use</span> strict;
<span class="kw2">use</span> warnings;
<span class="kw2">use</span> CGI;
&nbsp;
<span class="kw1">my</span> <span class="re0">$Query</span> = <span class="kw2">new</span> CGI;
&nbsp;
<span class="kw3">print</span> <span class="re0">$Query</span>-&gt;<span class="me1">header</span><span class="br0">(</span><span class="br0">)</span>;
<span class="kw3">print</span> <span class="st0">"Hello from&nbsp;: "</span>.<span class="re0">$Query</span>-&gt;<span class="me1">param</span><span class="br0">(</span><span class="st0">'name'</span><span class="br0">)</span>;
&nbsp;
<span class="kw3">exit</span>;</pre>
<a name="ASP.Net"></a>
<h4><span class="editsection"><a title="Edit section: ASP.Net" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=15"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">ASP.Net</span></h4>
<pre class="source source-csharp"><span class="kw1">protected</span> <span class="kw1">void</span> Page_Load<span class="br0">(</span><span class="kw4">object</span> sender, EventArgs e<span class="br0">)</span>
<span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>Request.<span class="me1">Form</span><span class="br0">[</span><span class="st0">"name"</span><span class="br0">]</span>&nbsp;!= <span class="kw1">null</span><span class="br0">)</span>
<span class="br0">{</span>
Response.<span class="me1">Write</span><span class="br0">(</span><span class="st0">"From Server: "</span> + Request.<span class="me1">Form</span><span class="br0">[</span><span class="st0">"name"</span><span class="br0">]</span><span class="br0">)</span>;
Response.<span class="me1">End</span><span class="br0">(</span><span class="br0">)</span>;
<span class="br0">}</span>
<span class="br0">}</span></pre>
<a name="ColdFusion"></a>
<h4><span class="editsection"><a title="Edit section: ColdFusion" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=16"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">ColdFusion</span></h4>
<pre class="source source-cfm"><span class="sc3"><span class="kw1">&lt;cfif</span> <span class="kw5">StructKeyExists</span><span class="br0">(</span>form, <span class="st0">"name"</span><span class="br0">)</span><span class="kw1">&gt;</span></span>
<span class="sc3"><span class="kw1">&lt;cfoutput&gt;</span></span>From Server: <span class="sc1">#form.<span class="kw3">name</span>#</span><span class="sc3"><span class="kw1">&lt;/cfoutput&gt;</span></span>
<span class="sc3"><span class="kw1">&lt;/cfif&gt;</span></span></pre>
<a name="JSP"></a>
<h4><span class="editsection"><a title="Edit section: JSP" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=17"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">JSP</span></h4>
<pre class="source source-java">From Server: $<span class="br0">{</span>param.<span class="me1">name</span><span class="br0">}</span></pre>
<p>使用Ajax的真正挑战，是需要进行适当的手工编码，并相应格式化为服务端可接收的数据结构。有几种格式供人们选择（最常用为JSON/XML)。 Ext没有跟任何服务器语言有独家联系，因此其它特定语言的库亦可用于Ext处理Ajax服务。只要页面接受到结果是EXT能处理的数据格式，Ext绝不会干涉服务器其他的事情！推荐参阅我们提供的<a class="external text" title="http://extjs.com/learn/Manual:Resources#Platform-Specific_Resources" href="http://extjs.com/learn/Manual:Resources#Platform-Specific_Resources" rel="nofollow">各个平台资源</a>以了解服务端框架的更多资讯和辅助。</p>
<a name=".E4.B8.8B.E4.B8.80.E6.AD.A5.E6.98.AF.EF.BC.9F"></a>
<h3><span class="editsection"><a title="Edit section: 下一步是？" href="http://extjs.com/learn/w/index.php?title=Tutorial:Introduction_to_Ext_2.0_%28Chinese%29&amp;action=edit&amp;section=18"><img src="http://extjs.com/learn/w/skins/extjs/page_edit.png"  alt="" /></a></span> <span class="mw-headline">下一步是？</span></h3>
<p>现在你已经一睹Ext其芳容，知道她大概能做些什么了。下面的资源有助您进一步深入了解： </p>
<ul>
    <li><a title="Tutorials" href="http://extjs.com/learn/Tutorials">Additional Tutorials</a>
    <li><a class="external text" title="http://extjs.com/deploy/dev/examples/" href="http://extjs.com/deploy/dev/examples/" rel="nofollow">Interactive Examples</a>
    <li><a class="external text" title="http://extjs.com/deploy/dev/docs/" href="http://extjs.com/deploy/dev/docs/" rel="nofollow">Ext Programmer's API Documentation</a>
    <li><a class="external text" title="http://extjs.com/forum/" href="http://extjs.com/forum/" rel="nofollow">Ext User Forums</a> </li>
</ul>
<!-- Pre-expand include size: 1156 bytes
Post-expand include size: 2220 bytes
Template argument size: 1422 bytes
Maximum: 2097152 bytes
-->
<div class="printfooter">Retrieved from "<a href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Chinese%29">http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Chinese%29</a>"</div>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/270868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-15 16:24 <a href="http://www.blogjava.net/caizh2009/articles/270868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EXT新手 建议建立自己的工具箱</title><link>http://www.blogjava.net/caizh2009/articles/270850.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Fri, 15 May 2009 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/270850.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/270850.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/270850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/270850.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/270850.html</trackback:ping><description><![CDATA[我认为学习EXT开发最好的方法是，在真正开发之前，掌握好高级JavaScript知识，<br />
就像鱼儿游在水里一样对JS运用自如。<br />
<br />
自己可以创建JavaScript的类、明白类原型（class's prototype）的原理，<br />
和明白函数的作用域都是有益的帮助。<br />
<br />
明白Ajax为什么要异步方式也是其中的一个知识点。<br />
<br />
论坛上50％所提出的问题很大原因是对JavaScript知识不牢固所至，而不是EXT API的问题。<br />
<br />
当真正开始用EXT做开发了，那么安装目录下examples/*的文件夹超过70个例子便是研究的好对象，<br />
这些例子为你展示了你日后将会使用的大多数技巧或方法。<br />
<br />
接着，最好就是先拿examples/*的文件夹中例子练一练手，做一些简单、轻型的小项目。<br />
如果直接拿EXT结合到程序去开发，很可能你会因为越来越复杂的问题泥足深陷。<br />
<br />
把每一项的 知识点/技巧 都做成可单独运行文件，这样以便你以后参考，还有一个好处是，可以发到论坛上，然后我们放到examples/*的文件夹，以便我们的测试并协助你。<br />
<br />
如果能按照以上的建议去做，我相信这是一个很好的累积。而且按照我的角度看，整个UI就是这样一点一点构建起来。<br />
<br />
Animal
<h2>Ext官方中文教程列表</h2>
<div style="margin-bottom: 10px">特别鸣谢：<a href="http://www.ajaxjs.com/" target="_blank">Ext中文站</a>整理、维护 </div>
<div style="margin-bottom: 10px">
<div style="padding-right: 10px; padding-left: 10px; padding-bottom: 10px; padding-top: 10px">
<div class="content">
<div style="color: gray; text-align: right">注意：转载文章,请保留原始链接和署名 </div>
<h3>入门:</h3>
<pre>Tutorial:EXT简介
<a href="http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Introduction_to_Ext_2.0_(Chinese)</a>
Tutorial:Ext 2简述
<a href="http://extjs.com/learn/Ext_2_Overview_%28Chinese%29" target="_blank">extjs.com/learn/Ext_2_Overview_(Chinese)</a>
Tutorial:EXT新手建议
<a href="http://extjs.com/learn/Tutorial:EXT%E6%96%B0%E6%89%8B%E5%BB%BA%E8%AE%AE" target="_blank">extjs.com/learn/Tutorial:EXT新手建议</a>
Tutorial:怎么轻松地进入Ext的世界?
<a href="http://extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Playing_With_Ext_The_Easy_Way_(Chinese)</a>
Tutorial:Javascript中的作用域（scope）是什么?(一)
<a href="http://extjs.com/learn/Tutorial:What_is_that_Scope_all_about_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:What_is_that_Scope_all_about_(Chinese)</a>
Tutorial:Javascript中的作用域（scope）是什么?(二)
<a href="http://extjs.com/learn/What_is_that_Scope_all_about2_%28Chinese%29" target="_blank">extjs.com/learn/What_is_that_Scope_all_about2_(Chinese)</a>
Manual:Ext源码概述
<a href="http://extjs.com/learn/Manual:Ext_Source_Overview_%28Chinese%29" target="_blank">extjs.com/learn/Manual:Ext_Source_Overview_(Chinese)</a>
Manual:Ext与RESTful Web Services
<a href="http://extjs.com/learn/Manual:RESTful_Web_Services_%28Chinese%29" target="_blank">extjs.com/learn/Manual:RESTful_Web_Services_(Chinese)</a>
</pre>
<h3>程序设计:</h3>
<pre>Tutorial:如何合理地规划一个应用程序
<a href="http://extjs.com/learn/Tutorial:Application_Layout_for_Beginners_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Application_Layout_for_Beginners_(Chinese)</a>
Tutorial:如何本地化ext的教程
<a href="http://extjs.com/learn/Tutorial:Localizing_Ext_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Localizing_Ext_(Chinese)</a>
Tutorial:xtype的含义
<a href="http://extjs.com/learn/Tutorial:Xtype_defined_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Xtype_defined_(Chinese)</a>
Tutorial:扩展Ext中的组件
<a href="http://extjs.com/learn/Manual:Component:Extending_Ext_Components%28Chinese%29" target="_blank">extjs.com/learn/Manual:Component:Extending_Ext_Components(Chinese)</a>
Tutorial:扩展与插件之间的区别
<a href="http://extjs.com/learn/Manual:Component:Extension_or_Plugin_zh-CN" target="_blank">extjs.com/learn/Manual:Component:Extension_or_Plugin_zh-CN</a>
Tutorial:Ext组件的复用
<a href="http://extjs.com/learn/Manual:Component:Extending_Ext_Components%28Chinese%29" target="_blank">extjs.com/learn/Manual:Component:Extending_Ext_Components(Chinese)</a>
Tutorial:从源码生成Ext
<a href="http://extjs.com/learn/Tutorial:Building_Ext_From_Source_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Building_Ext_From_Source_(Chinese)</a>
</pre>
<h3>基础用法:</h3>
<pre>Tutorial:DomQuery基础
<a href="http://extjs.com/learn/Tutorial:DomQuery_Basics%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:DomQuery_Basics(Chinese)</a>
Tutorial:Ext中的事件
<a href="http://extjs.com/learn/Tutorial:Events_Explained_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Events_Explained_(Chinese)</a>
Tutorial:简述模板
<a href="http://extjs.com/learn/Tutorial:Getting_Started_with_Templates_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Getting_Started_with_Templates_(Chinese)</a>
Tutorial:模板（Templates）的函数
<a href="http://extjs.com/learn/Tutorial:Utilizing_Format_Features_of_Templates_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Utilizing_Format_Features_of_Templates_(Chinese)</a>
Manual:事件的处理
<a href="http://extjs.com/learn/Manual:Intro:Event_Handling_cn" target="_blank">extjs.com/learn/Manual:Intro:Event_Handling_cn</a>
Manual:Ext中的继承
<a href="http://extjs.com/learn/Manual:Intro:Inheritance_%28Chinese%29" target="_blank">extjs.com/learn/Manual:Intro:Inheritance_(Chinese)</a>
Manual:Ext的类设计
<a href="http://extjs.com/learn/Manual:Intro:Class_Design_cn" target="_blank">extjs.com/learn/Manual:Intro:Class_Design_cn</a>
Manual:Ajax通讯
<a href="http://extjs.com/learn/Manual:Core:Ext.Ajax_%28Chinese%29" target="_blank">extjs.com/learn/Manual:Core:Ext.Ajax_(Chinese)</a>
Manual:JSON处理方法
<a href="http://extjs.com/learn/Manual:Core:Working_with_JSON_%28Chinese%29" target="_blank">extjs.com/learn/Manual:Core:Working_with_JSON_(Chinese)</a>
Manual:函数的原型扩展
<a href="http://extjs.com/learn/Manual:Utilities:Function_%28Chinese%29" target="_blank">extjs.com/learn/Manual:Utilities:Function_(Chinese)</a>
</pre>
<h3>组件的使用:</h3>
<pre>Tutorial:Tab标签页
<a href="http://extjs.com/learn/Tutorial:TabPanel_Basics_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:TabPanel_Basics_(Chinese)</a>
Tutorial:Ext 1.x中的布局
<a href="http://extjs.com/learn/Tutorial:Using_Layouts_with_Ext_-_Part_1_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Using_Layouts_with_Ext_-_Part_1_(Chinese)</a>
Tutorial:Grid组件初学
<a href="http://extjs.com/learn/Tutorial:Beginning_Using_the_Grid_Component_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Beginning_Using_the_Grid_Component_(Chinese)</a>
Tutorial:Grid的数据分页
<a href="http://extjs.com/learn/Tutorial:Basics_of_Paging_With_the_Grid_Component_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Basics_of_Paging_With_the_Grid_Component_(Chinese)</a>
Tutorial:Ext菜单器件
<a href="http://extjs.com/learn/Tutorial:Ext_Menu_Widget_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Ext_Menu_Widget_(Chinese)</a>
Tutorial:表单组件初学
<a href="http://extjs.com/learn/Tutorial:Getting_Started_with_Forms_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Getting_Started_with_Forms_(Chinese)</a>
Tutorial:表单组件初学(二)
<a href="http://extjs.com/learn/Tutorial:Loading_Data_Into_and_Submitting_a_Form_%28Chinese%29" target="_blank">extjs.com/learn/Tutorial:Loading_Data_Into_and_Submitting_a_Form_(Chinese)</a>
Manual:Cookie的存储
<a href="http://extjs.com/learn/Manual:Core:State_%28Chinese%29" target="_blank">extjs.com/learn/Manual:Core:State_(Chinese)</a>
</pre>
<h2>YUI-Ext(Ext前身)的相关文章</h2>
<pre>Tutorial:EXT新手建议：建立自己的工具箱（Toolkit）
<a href="http://extjs.com/learn/Tutorial:EXT%E6%96%B0%E6%89%8B%E5%BB%BA%E8%AE%AE" target="_blank">extjs.com/learn/Tutorial:EXT新手建议</a>
Tutorial:如何用YUI轻松做JavaScript动画
<a href="http://extjs.com/learn/Tutorial:%E5%A6%82%E4%BD%95%E7%94%A8YUI%E8%BD%BB%E6%9D%BE%E5%81%9AJavaScript%E5%8A%A8%E7%94%BB" target="_blank">extjs.com/learn/Tutorial:如何用YUI轻松做JavaScript动画</a>
Tutorial:轻松三步，搞掂内存泄漏
<a href="http://extjs.com/learn/Tutorial:%E8%BD%BB%E6%9D%BE%E4%B8%89%E6%AD%A5%EF%BC%8C%E6%90%9E%E6%8E%82%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F" target="_blank">extjs.com/learn/Tutorial:轻松三步，搞掂内存泄漏</a>
Tutorial:用YUI-EXT创建Ajax Feed-viewer
<a href="http://extjs.com/learn/Tutorial:%E7%94%A8YUI-EXT%E5%88%9B%E5%BB%BAAjax_Feed-viewer" target="_blank">extjs.com/learn/Tutorial:用YUI-EXT创建Ajax_Feed-viewer</a>
Tutorial:使用DomHelper 创建元素的DOM、HTML片断和模版
<a href="http://extjs.com/learn/Tutorial:%E4%BD%BF%E7%94%A8DomHelper%20%E5%88%9B%E5%BB%BA%E5%85%83%E7%B4%A0%E7%9A%84DOM%E3%80%81HTML%E7%89%87%E6%96%AD%E5%92%8C%E6%A8%A1%E7%89%88" target="_blank">extjs.com/learn/Tutorial:使用DomHelper 创建元素的DOM、HTML片断和模版</a>
Tutorial:EXT设计模式初学习
<a href="http://extjs.com/learn/Tutorial:EXT%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E5%88%9D%E5%AD%A6%E4%B9%A0" target="_blank">extjs.com/learn/Tutorial:EXT设计模式初学习</a>
Tutorial:预览 ：增强版的拖放和新增的TreePanel
<a href="http://extjs.com/learn/Tutorial:%E9%A2%84%E8%A7%88_%EF%BC%9A%E5%A2%9E%E5%BC%BA%E7%89%88%E7%9A%84%E6%8B%96%E6%94%BE%E5%92%8C%E6%96%B0%E5%A2%9E%E7%9A%84TreePanel" target="_blank">extjs.com/learn/Tutorial:预览_：增强版的拖放和新增的TreePanel</a>
Tutorial:创建一个可复用的AJAX对话框--一个完成好的例子
<a href="http://extjs.com/learn/Tutorial:%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%8F%AF%E5%A4%8D%E7%94%A8%E7%9A%84AJAX%E5%AF%B9%E8%AF%9D%E6%A1%86--%E4%B8%80%E4%B8%AA%E5%AE%8C%E6%88%90%E5%A5%BD%E7%9A%84%E4%BE%8B%E5%AD%90" target="_blank">extjs.com/learn/Tutorial:创建一个可复用的AJAX对话框--一个完成好的例子</a>
Tutorial:创建YUI的Grid
<a href="http://extjs.com/learn/Tutorial:%E5%88%9B%E5%BB%BAYUI%E7%9A%84Grid" target="_blank">extjs.com/learn/Tutorial:创建YUI的Grid</a>
Tutorial:Grid 调用远程数据
<a href="http://extjs.com/learn/Tutorial:Grid%20%E8%B0%83%E7%94%A8%E8%BF%9C%E7%A8%8B%E6%95%B0%E6%8D%AE" target="_blank">extjs.com/learn/Tutorial:Grid 调用远程数据</a>
Tutorial:为Yahoo! UI Extensions Grid增加内置的可编辑器
<a href="http://extjs.com/learn/Tutorial:%E4%B8%BAYahoo%21%20UI%20Extensions%20Grid%E5%A2%9E%E5%8A%A0%E5%86%85%E7%BD%AE%E7%9A%84%E5%8F%AF%E7%BC%96%E8%BE%91%E5%99%A8" target="_blank">extjs.com/learn/Tutorial:为Yahoo! UI Extensions Grid增加内置的可编辑器</a>
Tutorial:Ext.MasterTemplates 入手
<a href="http://extjs.com/learn/Tutorial:Ext.MasterTemplates%20%E5%85%A5%E6%89%8B" target="_blank">extjs.com/learn/Tutorial:Ext.MasterTemplates 入手</a>
Tutorial:像了解爱人一样了解ExtJs
<a href="http://extjs.com/learn/Tutorial:%E5%83%8F%E4%BA%86%E8%A7%A3%E7%88%B1%E4%BA%BA%E4%B8%80%E6%A0%B7%E4%BA%86%E8%A7%A3ExtJs" target="_blank">extjs.com/learn/Tutorial:像了解爱人一样了解ExtJs</a>
Tutorial:JSON和浏览器安全
<a href="http://extjs.com/learn/Tutorial:JSON%E5%92%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AE%89%E5%85%A8" target="_blank">extjs.com/learn/Tutorial:JSON和浏览器安全</a>
Tutorial:JavaScript的一种模组模式
<a href="http://extjs.com/learn/Tutorial:JavaScript%E7%9A%84%E4%B8%80%E7%A7%8D%E6%A8%A1%E7%BB%84%E6%A8%A1%E5%BC%8F" target="_blank">extjs.com/learn/Tutorial:JavaScript的一种模组模式</a>
Tutorial:关于JavaScript的 貌似类（pseudo-classes）－－－－不吐不快
<a href="http://extjs.com/learn/Tutorial:%E5%85%B3%E4%BA%8EJavaScript%E7%9A%84%20%E8%B2%8C%E4%BC%BC%E7%B1%BB%EF%BC%88pseudo-classes%EF%BC%89%EF%BC%8D%EF%BC%8D%EF%BC%8D%EF%BC%8D%E4%B8%8D%E5%90%90%E4%B8%8D%E5%BF%AB" target="_blank">extjs.com/learn/Tutorial:关于JavaScript的 貌似类（pseudo-classes）－－－－不吐不快	</a>
Tutorial:Application Layout 程式開發入門介紹
<a href="http://extjs.com/learn/Tutorial:Application%20Layout%20%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC%E5%85%A5%E9%96%80%E4%BB%8B%E7%B4%B9" target="_blank">extjs.com/learn/Tutorial:Application Layout 程式開發入門介紹</a>
Tutorial:如何建立一個可以Disable/Editable的Editor gird
<a href="http://extjs.com/learn/Tutorial:%E5%A6%82%E4%BD%95%E5%BB%BA%E7%AB%8B%E4%B8%80%E5%80%8B%E5%8F%AF%E4%BB%A5Disable/Editable%E7%9A%84Editor%20gird" target="_blank">extjs.com/learn/Tutorial:如何建立一個可以Disable/Editable的Editor gird</a>
</pre>
</div>
</div>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/270850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-15 15:06 <a href="http://www.blogjava.net/caizh2009/articles/270850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ExtJs制作菜单导航</title><link>http://www.blogjava.net/caizh2009/articles/268977.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Tue, 05 May 2009 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/268977.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/268977.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/268977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/268977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/268977.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本菜单的效果&nbsp;完整代码下载&nbsp;详细代码：&nbsp;&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "http://www.w3.org/TR/html4/strict.dtd"&gt;&lt;html&gt;...&nbsp;&nbsp;<a href='http://www.blogjava.net/caizh2009/articles/268977.html'>阅读全文</a><img src ="http://www.blogjava.net/caizh2009/aggbug/268977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-05 15:00 <a href="http://www.blogjava.net/caizh2009/articles/268977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ExtJs 的进度的实现（转）</title><link>http://www.blogjava.net/caizh2009/articles/268976.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Tue, 05 May 2009 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/268976.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/268976.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/268976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/268976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/268976.html</trackback:ping><description><![CDATA[<div id="header">
<div id="HeaderTitle">
<div id="subTitle">
<a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/jaychaoqun/archive/2008/05/23/1205634.html">ExtJs实现进度条实例,很酷，很简单..</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);
//]]&gt;
</script>
<h2>
</h2>
<div class="post"><style type="text/css">
<!-- .style4 {color: #660033}
.style5 {color: #660000}
-->
</style>
<p>ExtJs 的进度的实现，您可以<a href="http://files.cnblogs.com/jaychaoqun/ExtJs%E5%AE%9E%E7%8E%B0%E8%BF%9B%E5%BA%A6%E6%9D%A1%E5%AE%9E%E4%BE%8B.htm.rar">点这里</a>下载本实例代码，</p>
<p><strong>代码详解：</strong></p>
<div id="div1" style="border: 1px dotted green; background-color: #cccccc;">
<pre>   var pbar1; <span class="style5">//定义一个变量用于进度条对象</span><br />
var btn1; <span class="style4">//定义一个变量用于进按钮对象</span><br />
Ext.onReady(function(){<br />
pbar1=new Ext.ProgressBar({ <span class="style5">//实例化进度条</span><br />
renderTo:"div1",  <span class="style5">//进度条呈现的一个DIV</span><br />
width:800,    <span class="style5">//进度条的宽度</span><br />
text:"单击按钮开始..." <span class="style5">//在进度条里的初始文本</span><br />
});<br />
btn1=Ext.get("btn1");  <span class="style5">//按钮对象</span><br />
btn1.on("click",f1);  <span class="style5">//按钮事件，单击时调用f1()函数</span><br />
});<br />
var i=0; <span class="style5">//初始化一个变量为0，下面会用到。</span><br />
function f1(){<br />
i++; //让i加1<br />
pbar1.updateProgress(i/100.0); <span class="style5">//让进度条更新到指定的进度。这个值是0-1之间的数，我让i/100.0,以让它的结果是一个小数</span><br />
pbar1.updateText("进度:"+i+"%"); <span class="style5">//进度条显示的文本</span><br />
if(i==100){    <span class="style5">//当i==100的时候让按钮状态可以使用，并让i=1，再让进度条停止 </span><br />
document.getElementById("btn1").disabled=false;<br />
i=0;<br />
clearInterval(x);<br />
}<br />
document.getElementById("btn1").disabled=true; <span class="style5">//让按钮的状态为不可用</span><br />
setTimeout("f1()",50);<span class="style5">//用setTimeout函数递归调用f1()函数，以达到进度条一直跑的效果</span><br />
}<br />
<span class="style5">//*****************进度条实例2*********************//</span><br />
var pbar2;<span class="style5">//定义一个变量用于进度条对象</span><br />
var btn2;<span class="style5">//定义一个变量用于进按钮对象</span><br />
Ext.onReady(function(){<br />
pbar2 = new Ext.ProgressBar({ <span class="style5">//实例化进度条</span><br />
renderTo:"div2",  <span class="style5">//进度条呈现的一个DIV</span><br />
width:600,    <span class="style5">//进度条的宽度</span><br />
text:"单击按钮开始..." <span class="style5">//在进度条里的初始文本</span><br />
});<br />
btn2=Ext.get("btn2");  <span class="style5">//按钮对象</span><br />
btn2.on("click",function(){<span class="style5">//按钮事件，单击时执行funciton()</span><br />
Runner.run(pbar2,btn2,10,function(){  <span class="style5"> //Runner是在下面定义。Runner.run方法参数(进度条对象，按钮对象，进度大小：可以自由设定，进度条完成时执行的行数：如果不做任何事情可以填null)</span><br />
Ext.Msg.alert("Information","进度条已经加载完成......"); <span class="style5">//对话框</span><br />
pbar2.reset();  <span class="style5">//重置进度条</span><br />
pbar2.updateText("单击按钮重新开始..."); <span class="style5">//更新进度条的文本</span><br />
});<br />
});<br />
});<br />
<span class="style5">//这个函数是我从Ext官方下载的包里的examples里直接拷贝来的，我也懒得去研究，貌似有点复杂 </span><br />
var Runner = function(){<br />
var f = function(v, pbar, btn, count, cb){<br />
return function(){<br />
if(v &gt; 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 &lt; (count+2); i++){<br />
setTimeout(f(i, pbar, btn, count, cb), i*ms);<br />
}<br />
}<br />
}<br />
}();<br />
<span class="style5">//***********进度条实例3**************//</span><br />
var pbar3;<span class="style5">//定义一个变量用于进度条对象</span><br />
var btn3;<span class="style5">//定义一个变量用于进按钮对象</span><br />
Ext.onReady(function(){<br />
pbar3 = new Ext.ProgressBar({ <span class="style5">//实例化进度条</span><br />
renderTo:"div3",  <span class="style5">//进度条呈现的一个DIV</span><br />
width:300,    <span class="style5">//进度条的宽度</span><br />
text:"单击按钮开始..." <span class="style5">//在进度条里的初始文本</span><br />
});<br />
btn3=Ext.get("btn3");    <span class="style5">//按钮对象</span><br />
btn3.on("click",function(){  <span class="style5">//按钮单击事件</span><br />
btn3.dom.disabled=true;   <span class="style5">//把按钮设置为不可用状态</span><br />
pbar3.updateText("正在更新..."); <span class="style5">//更新进度条的文本信息</span><br />
pbar3.wait({     <span class="style5">//开始执行进度条</span><br />
interval:100,    <span class="style5">//每次进度的时间间隔</span><br />
duration:5000,    <span class="style5">//进度条跑动的持续时间</span><br />
increment:50,    <span class="style5">//进度条的增量，这个值设的越大，进度条跑的越慢，不能小于1，如果小于1，进度条会跑出范围</span><br />
fn:function(){    <span class="style5">//进度条完成时执行的函数，也可设为nulll</span><br />
btn3.dom.disabled=false;<span class="style5">//把按钮设置为可用状态</span><br />
pbar3.updateText("更新完成..单击按钮重新开始...");<span class="style5">//更新进度条的文本信息</span><br />
}<br />
});<br />
});<br />
});<br />
</pre>
</div>
</div>
<img src ="http://www.blogjava.net/caizh2009/aggbug/268976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-05 14:58 <a href="http://www.blogjava.net/caizh2009/articles/268976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext布局类的介绍与使用(转黄灯桥的专栏) </title><link>http://www.blogjava.net/caizh2009/articles/268975.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Tue, 05 May 2009 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/268975.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/268975.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/268975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/268975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/268975.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ext布局类的介绍与使用&nbsp;在WEB应用的开发中，应用界面的布局设计是一项很重要的内容。在EXT中，可以通过BorderLayout与NestedLayoutPanel很方便的设计出各种的布局。本文章的主要内容主要是介绍如何通过BorderLayout、NestedLayoutPanel以及各种面板设计页面布局。&nbsp;1.&nbsp;&nbsp;&nbsp;&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/caizh2009/articles/268975.html'>阅读全文</a><img src ="http://www.blogjava.net/caizh2009/aggbug/268975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-05 14:54 <a href="http://www.blogjava.net/caizh2009/articles/268975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ExtJs学习入门--之HELLOWORLD</title><link>http://www.blogjava.net/caizh2009/articles/268970.html</link><dc:creator>小菜毛毛</dc:creator><author>小菜毛毛</author><pubDate>Tue, 05 May 2009 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/caizh2009/articles/268970.html</guid><wfw:comment>http://www.blogjava.net/caizh2009/comments/268970.html</wfw:comment><comments>http://www.blogjava.net/caizh2009/articles/268970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caizh2009/comments/commentRss/268970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caizh2009/services/trackbacks/268970.html</trackback:ping><description><![CDATA[<div class="posthead">
<h2>
<a id="viewpost1_TitleUrl" class="singleposttitle" href="../archive/2009/05/05/268969.html">ExtJs学习入门</a>
</h2>
Posted on 2009-05-05 14:37 <a href="../">小菜毛毛</a> 阅读(0) <a href="../archive/2009/05/05/268969.html#Post">评论(0)</a> &nbsp;<a href="EditPosts.aspx?postid=268969">编辑</a> &nbsp;<a href="../AddToFavorite.aspx?id=268969">收藏</a>
<img src="../aggbug/268969.html?webview=1" width="1" height="1"  alt="" />
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description rdf:about="http://www.blogjava.net/caizh2009/archive/2009/05/05/268969.html" dc:identifier="http://www.blogjava.net/caizh2009/archive/2009/05/05/268969.html" dc:title="ExtJs学习入门" trackback:ping="http://www.blogjava.net/caizh2009/services/trackbacks/268969.aspx"  />
</rdf:RDF>
-->
</div>
<p><strong><span style="font-family: 宋体;" lang="EN-US">ExtJs</span></strong><strong><span style="font-family: 宋体;">简介</span></strong>：<span lang="EN-US"><br />
ExtJS</span>是一个用<span lang="EN-US">javascript</span>写的，主要用于创建前端用户界面，使一个与后台技术无关的前端<span lang="EN-US">ajax</span>框架。因此，<span lang="EN-US"><br />
</span>可以把<span lang="EN-US">ExtJs</span>用在<span lang="EN-US">.Net Java </span>等各种开发语言开发的应用中。</p>
<p><span lang="EN-US"><br />
</span><strong><span style="font-family: 宋体;">获得<span lang="EN-US">ExtJS</span></span></strong>：<span lang="EN-US"><br />
ExtJs</span>开源框架可以在官方网站上下载，网址：<span lang="EN-US"><a href="http://www.cnblogs.com/jaychaoqun/admin/http/extjs.com/download">http//extjs.com/download </a><br />
</span>解压出来的文件有：<span lang="EN-US"><br />
adapter: </span>负责将里面提供第三方底层库<span lang="EN-US">(</span>包括<span lang="EN-US">Ext</span>自带的底层库<span lang="EN-US">)</span>映射为<span lang="EN-US">Ext</span>所支持的底层库。<span lang="EN-US"><br />
build: </span>压缩后的<span lang="EN-US">ext</span>全部源码（里面分类存放）。<span lang="EN-US"> <br />
docs</span>：<span lang="EN-US">extJS API</span>。<span lang="EN-US"><br />
exmaples:</span>提供使用<span lang="EN-US">ExtJs</span>技术做出的小事例<span lang="EN-US">.<br />
resources:Ext UI</span>资源文件目录<span lang="EN-US">,</span>如<span lang="EN-US">Css </span>图片文件都存放在这里面<span lang="EN-US">.<br />
<span class="style51">Ext-all-debug.js:</span></span><span class="style51">无压缩的<span lang="EN-US">Ext</span>全部的源码<span lang="EN-US">(</span>用于调式<span lang="EN-US">).</span></span><span style="color: #333333;" lang="EN-US"><br />
<span class="style51">ext-core.js:</span></span><span class="style51">压缩后的<span lang="EN-US">Ext</span>的核心组件<span lang="EN-US">,</span>包括<span lang="EN-US">sources/core</span>下的所有类<span lang="EN-US">.</span></span><span style="color: #333333;" lang="EN-US"><br />
<span class="style51">ext-core-debug.js:</span></span><span class="style51">无压缩<span lang="EN-US">Ext</span>的核心组件<span lang="EN-US">,</span>包括<span lang="EN-US">source/core</span>下的所有类<span lang="EN-US">.</span></span></p>
<p><strong><span style="font-family: 宋体;">编写<span lang="EN-US">ExtJs</span>程序必备包</span></strong><span lang="EN-US">:<br />
ext-all.js <span class="style31">|--</span></span><span class="style31">核心文件，包含了<span lang="EN-US">ext</span>的所有功能</span><span lang="EN-US"><br />
adapter/ext/ext-base.js <span class="style31">| --</span></span><span class="style31">基础包</span><span lang="EN-US"><br />
build/locale/ext-lang-zh_CN.js <span class="style31">|</span></span><span class="style31">中文翻译</span><span lang="EN-US"><br />
resources <span class="style31">|</span></span><span class="style31">包含<span lang="EN-US">css</span>样式和图片</span></p>
<p><strong><span style="font-family: 宋体;">第一个<span lang="EN-US">HelloWorld</span>程序</span></strong></p>
<span class="style11"><span lang="EN-US">//</span>在自己建的工程里导入必须的包</span><span lang="EN-US"><br />
&lt;link rel="stylesheet" type="text/css" href="resources/css/ext-all.css"&gt;<br />
&lt;script type="text/javascript" src="adapter/ext/ext-base.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="ext-all.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="examples.js"&gt;&lt;/script&gt;<br />
&lt;script&gt;<br />
Ext.onReady( //初始化页面时执行<br />
function()<br />
{<br />
Ext.MessageBox.alert('hello world','Hello ExtJs');<br />
}<br />
);<br />
&lt;/script</span>
<img src ="http://www.blogjava.net/caizh2009/aggbug/268970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caizh2009/" target="_blank">小菜毛毛</a> 2009-05-05 14:43 <a href="http://www.blogjava.net/caizh2009/articles/268970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>