<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[Kelvin's ColorWorld - 技术积累]]></title>
  <subtitle type="html"><![CDATA[世界之大无奇不有]]></subtitle>
  <id>http://www.falaosao.net/</id>
  <link rel="alternate" type="text/html" href="http://www.falaosao.net/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.falaosao.net/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2010-04-24T15:02:30+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[用perl实现简单的网络蜘蛛]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2010-04-24T15:02:30+08:00</updated>
	  <published>2010-04-24T15:02:30+08:00</published>
		  <summary type="html"><![CDATA[<p>主要用到了两个包：Net::HTTP和HTML::Parser，在cpan都有下载，地址如下：<br />
Net::HTTP:<a href="http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.834.tar.gz">http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.834.tar.gz</a><br />
HTML::Parser<a href="http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/HTML-Parser-3.65.tar.gz">http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/HTML-Parser-3.65.tar.gz</a><br />
如果以上地址挂了，请到<a href="http://www.cpan.org">http://www.cpan.org</a>下载</p>
<p>&nbsp;</p>
<p><strong><span style="color: #000080">代码如下：</span></strong></p>
<p>#!/usr/bin/perl -w<br />
use Net::HTTP;<br />
use strict;</p>
<p>package GetSummary;<br />
use base &quot;HTML::Parser&quot;;</p>
<p>my $meta_contents;<br />
my $h1 = &quot;&quot;;<br />
my $title = &quot;&quot;;</p>
<p>my $href = &quot;&quot;;<br />
my $caption = &quot;&quot;;</p>
<p># set state flags<br />
my $flag = 0;<br />
my @link = ();<br />
my $newLink = &quot;&quot;;<br />
my %visited = ();<br />
sub start { #<span style="color: #ff0000">对html::parser start子函数的重写，这里是找到html标签头部<br />
</span>&nbsp;&nbsp;&nbsp; my ($self, $tag, $attr, $attrseq, $origtext) = @_;</p>
<p>&nbsp;&nbsp;&nbsp; if ($tag =~ /^a$/i) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #find tag A<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $newLink = $attr-&gt;{'href'};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($newLink =~ /^http\:\/\/|mailto\:|file\:/i){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(&quot;\n==================&quot;,$newLink ,&quot; isn't a target========================\n&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!exists($visited{$newLink})){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $visited{$newLink} = &quot;true&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push(@link,&nbsp; .$newLink); #<span style="color: #ff0000">把url放到队列里<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(&quot;[Found]:&quot;, $newLink, &quot;\n&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $flag = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(&quot;\n============&quot;, $newLink ,&quot; has been vistied!=============\n&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>sub text {#<span style="color: #ff0000">对html::parser text子函数的重写，这里是找到html标签之间的内容</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my ($self, $text) = @_;<br />
}</p>
<p>sub end {#<span style="color: #ff0000">对html::parser end子函数的重写，这里是找到html标签尾部</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my ($self, $tag, $origtext) = @_;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($tag =~ /^a$/i) { $flag = 0; }<br />
}</p>
<p>sub readHtml{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $s = Net::HTTP-&gt;new(Host =&gt; &quot;<strong><span style="color: #ff0000">这里写地址</span></strong>&quot;) || die $@;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $s-&gt;write_request(GET =&gt; @_, 'User-Agent' =&gt; &quot;MWSpider&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my($code, $mess, %h) = $s-&gt;read_response_headers;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $result = &quot;&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $buf;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $n = $s-&gt;read_entity_body($buf, 1024);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; die &quot;read failed: $!&quot; unless defined $n;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; last unless $n;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result .= $buf;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $result;<br />
}</p>
<p><br />
my $p = new GetSummary;<br />
my $link = &quot;<strong><span style="color: #ff0000">这里写开始页，例如从index.htm</span></strong>&quot;;<br />
my $content = &quot;&quot;;<br />
while (defined $link) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $content = readHtml($link);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #$content =~ s/\n//img;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(&quot;[Spider]:\033[31;1mI m in &quot;, $link, &quot;\033[0m\n&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(&quot;[Content]:\n\033[33;1m&quot;, $content, &quot;\033[0m\n&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $p-&gt;parse($content);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $link = shift(@link);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(&quot;\n&quot;);<br />
}<br />
$p-&gt;eof;<br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/550.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=550</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[读懂varnishstat]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2010-04-11T19:19:56+08:00</updated>
	  <published>2010-04-11T19:19:56+08:00</published>
		  <summary type="html"><![CDATA[<p>varnishstat是查看varnish状态的工具，但里面有些参数官方网站都没介绍清楚，在这里备忘一下。</p>
<p><img class="boxinner" alt="" src="http://falaosao.net/attachments/month_1004/32010411191653.jpg" /></p>
<p>首先看看黄色注解部分</p>
<p>Hitrate ratio由三个数字组成，第一个数字范围0-10，第二个数字范围0-100，第三个数字范围0-1000。分别表示过去N秒内的Hitrate avg。上图由于我是刚打开varnishstat，因此三个数字都是4，表示过去4秒内的平均hitrate，如果打开的时间足够长，以上三个数字就会逐渐变成10，100，1000。</p>
<p>Hitrate avg里的内容是命中率，需要乘以100转换成百分比，例如上图表示命中率为99.23%</p>
<p>接着往下看，三列数据分别表示实时数据，每秒平均值，自启动以来每秒平均值。有些参数是没有后两列的，这是因为这些值都有固定变动范围，例如N work threads，只会在0到最大值（我设的是200）之间变动，搞每秒平均值意义不大（我猜）。</p>
<p>以下指标需要重点关注一下：</p>
<p>Client connections accepted （每秒）。 <br />
Client requests received：经验表明connection:request=1:10左右时比较理想，比这个数大很多或者小很多都是不好的。 <br />
Backend connections failures：这个数应该尽可能小，没有就最好，多的话就要看看backend指向的服务是否有问题了。 <br />
N struct object：当前被cache的条目。 <br />
N worker threads：当前工作线程数。 <br />
N worker threads created：创建了多少线程(should be close to the number you are running now) 。 <br />
N worker threads not created ：最好是0，表示varnish尝试创建线程但失败。 <br />
N worker threads limited ：由于线程上限限制或者线程池反应延迟导致不能成功创建的线程数，越小越好。. <br />
N overflowed work requests ：进入等待队列的请求数，越小越好。 <br />
N dropped work requests：队列被塞满后扔掉的请求，这个最好不要有。 <br />
N LRU nuked objects：由于cache空间满而不得不扔掉的cache条目，如果这个数字是0，就没必要增加cache的大小了。 <br />
n_expired ：由于cache时间超时而被扔掉的cache条目，具体要看你的ttl设多大了。<br />
其他用法：</p>
<p>使用-1参数能看到所有的性能数据，例如：varnishstat -1 -n /workdir/</p>
<p>使用varnishstat -f field1,field2,field3,...,fieldN能查看想要关心的参数。</p>
<p>更多用法请用万能的-h参数。<br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/536.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=536</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ExtJs疑难杂症之菜单图标移位问题]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-06-05T21:50:59+08:00</updated>
	  <published>2009-06-05T21:50:59+08:00</published>
		  <summary type="html"><![CDATA[<p><strong>版本：</strong>2.2</p>
<p><strong>症状：</strong>ExtJs号称是跨浏览器的，但CSS还是有点问题。例如菜单图标的移位问题就很闹心，我们公司使用的都是IE6，结果图标就变成这样了。</p>
<p>以下是extJs自带的example：</p>
<p><img class="boxinner" alt="" src="http://www.falaosao.net/attachments/All_Files/h200965214133.jpg" /></p>
<p><strong>解决办法：</strong>用了很多办法都搞不定，由于我的系统是内部系统，只能在局域网访问，而且公司统一标装IE6.0，不用考虑别的浏览器。于是我打算修改ext-all.css文件。</p>
<p>打开ext-all.css文件，找到这里：</p>
<div class="codeText">
<div class="codeHead">CSS代码</div>
<ol class="dp-css">
    <li class="alt"><span><span>.x-menu-item-</span><span class="string">icon</span><span>{</span><span class="keyword">border</span><span>:0&nbsp;</span><span class="string">none</span><span>;</span><span class="keyword">height</span><span>:</span><span class="string">16px</span><span>;</span><span class="keyword">padding</span><span>:0;</span><span class="keyword">vertical-align</span><span>:</span><span class="string">top</span><span>;</span><span class="keyword">width</span><span>:</span><span class="string">16px</span><span>;</span><span class="keyword">position</span><span>:</span><span class="string">absolute</span><span>;</span><span class="string">left</span><span>:</span><span class="string">0px</span><span>;</span><span class="string">top</span><span>:</span><span class="string">3px</span><span>;</span><span class="keyword">margin</span><span>:0;</span><span class="keyword">background-position</span><span>:</span><span class="string">center</span><span>;}&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>改成：</p>
<div class="codeText">
<div class="codeHead">CSS代码</div>
<ol class="dp-css">
    <li class="alt"><span><span>.x-menu-item-</span><span class="string">icon</span><span>{</span><span class="keyword">border</span><span>:0&nbsp;</span><span class="string">none</span><span>;</span><span class="keyword">height</span><span>:</span><span class="string">16px</span><span>;</span><span class="keyword">padding</span><span>:0;</span><span class="keyword">vertical-align</span><span>:</span><span class="string">top</span><span>;</span><span class="keyword">width</span><span>:</span><span class="string">16px</span><span>;</span><span class="keyword">position</span><span>:</span><span class="string">absolute</span><span>;</span><span class="string">left</span><span>:-</span><span class="string">25px</span><span>;</span><span class="string">top</span><span>:</span><span class="string">3px</span><span>;</span><span class="keyword">margin</span><span>:0;</span><span class="keyword">background-position</span><span>:</span><span class="string">center</span><span>;}&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>OK，一切正常。</p>
<p><img class="boxinner" alt="" src="http://www.falaosao.net/attachments/All_Files/b200965214741.jpg" /></p>
<p>用chrome测一下，果然走样了，这种方法只在IE6下有效，大家注意了。</p>
<p><img class="boxinner" alt="" src="http://www.falaosao.net/attachments/All_Files/6200965215039.jpg" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/534.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=534</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ExtJs疑难杂症之GridPanel单元格不能选中复制问题]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-06-05T21:21:58+08:00</updated>
	  <published>2009-06-05T21:21:58+08:00</published>
		  <summary type="html"><![CDATA[<p>Ext.grid.GridPanel有一个重大缺陷，就是单元格的内容不能选中，没法选中就没法复制，给用户带来很多不便。</p>
<p><strong>分析：</strong>用IE Developer Toolbar打开ExtJs输出的代码研究了一下，发现每个单元格的div都有一个属性：unselectable=&quot;on&quot;，看来是css在作怪。</p>
<p><strong>版本：</strong>2.2</p>
<p><strong>解决办法：</strong>extJs官方论坛上有具体的解决办法，比较可行的如下。</p>
<p>step1：添加新的css样式。</p>
<div class="codeText">
<div class="codeHead">CSS代码</div>
<ol class="dp-css">
    <li class="alt"><span><span>&lt;style&nbsp;type=</span><span class="string">&quot;text/css&quot;</span><span>&gt; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;.x-selectable,&nbsp;.x-selectable&nbsp;*&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-moz-user-select:&nbsp;text!</span><span class="keyword">important</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-khtml-user-select:&nbsp;text!</span><span class="keyword">important</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&lt;/style&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>step2：修改Ext.grid.GridPanel的protoType，我是自己写了一个新的js文件，记得要在ext-all.js后面引入。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">if</span><span>&nbsp;(!Ext.grid.GridView.prototype.templates)&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Ext.grid.GridView.prototype.templates&nbsp;=&nbsp;{}; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
    <li><span>Ext.grid.GridView.prototype.templates.cell&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Ext.Template( &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'&lt;td&nbsp;class=&quot;x-grid3-col&nbsp;x-grid3-cell&nbsp;x-grid3-td-{id}&nbsp;x-selectable&nbsp;{css}&quot;&nbsp;style=&quot;{style}&quot;&nbsp;tabIndex=&quot;0&quot;&nbsp;{cellAttr}&gt;'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'&lt;div&nbsp;class=&quot;x-grid3-cell-inner&nbsp;x-grid3-col-{id}&quot;&nbsp;{attr}&gt;{value}&lt;/div&gt;'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">'&lt;/td&gt;'</span><span>&nbsp;&nbsp;</span></li>
    <li><span>);&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>done!现在GridPanel的单元格可以选中了。</p>
<p><img class="boxinner" alt="" src="http://www.falaosao.net/attachments/All_Files/c200965211610.jpg" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/533.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=533</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[轻松掌握ExtJs系列教程二：使用Ext.Button组件 ]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-05-24T10:55:29+08:00</updated>
	  <published>2009-05-24T10:55:29+08:00</published>
		  <summary type="html"><![CDATA[<p>本章介绍如何使用Ext.Button组件。如果大家使用IE的话建议安装IE Developer Toolbar，这样就能实时看到ext究竟生成了什么代码。不安装也可以，ext本身也自带了类似功能，下面例子就启用了debug功能。</p>
<p>效果如下图：</p>
<p><img class="boxinner" alt="" src="http://falaosao.net/attachments/All_Files/d2009524105111.jpg" /></p>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</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">&quot;stylesheet&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/css&quot;</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;resources/css/ext-all.css&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</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">&quot;text/javascript&quot;</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;adapter/jquery/jquery.js&quot;</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></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</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">&quot;text/javascript&quot;</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;adapter/jquery/ext-jquery-adapter.js&quot;</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></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</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">&quot;text/javascript&quot;</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;ext-all-debug.js&quot;</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></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</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">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.QuickTips.init(); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">btn</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">new</span><span>&nbsp;Ext.Button({ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text:&quot;hello&nbsp;button!&quot;, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowDepress:&nbsp;true,&nbsp;//显示按钮按下效果，需要和enableToggle联合使用 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableToggle:&nbsp;true,&nbsp;&nbsp;//为按钮添加开关效果 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disabled:&nbsp;false,&nbsp;//是否禁用 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hidden:&nbsp;false,&nbsp;//是否隐藏 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hideMode:&nbsp;&quot;display&quot;,&nbsp;//隐藏模式，默认是display，也可以使用visibility或offsets(visibility和display的区别是前者隐藏但保留位置，后者隐藏而不保留位置，后续元素会自动补位) &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hideParent:&nbsp;false,&nbsp;//是否隐藏parent组件，例如一个button在一个div上，如果在隐藏button同时需要隐藏div，这个属性应该设为true &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disabledClass:&nbsp;'',&nbsp;//按钮禁用时所使用的样式，默认是:x-item-disabled &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:&quot;a&quot;,&nbsp;//就是id了，不给的话ext会自动赋值 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu:[ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:&quot;menu1&quot;,handler:&nbsp;function(){Ext.Msg.alert(&quot;menuinfo&quot;,&quot;this&nbsp;is&nbsp;menu1!&quot;);}}, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:&quot;menu2&quot;}, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{text:&quot;menu3&quot;} &nbsp;&nbsp;</span></li>
    <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;&nbsp;], &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listeners:&nbsp;{//添加监听事件，如果有多个事件就要使用它，格式如下，用逗号分割。如果是click事件默认优先交给handler处理。 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&quot;mouseover&quot;:function(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert('info','this&nbsp;is&nbsp;listeners!'); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tooltip:&nbsp;&quot;gaga&quot;,&nbsp;//tooltip内容 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tooltipType:&nbsp;&quot;qtip&quot;,&nbsp;//tooltip类型，默认使用qtip，但使用前必须先初始化，留意第一行js。也可以使用title。 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toggleGroup:&nbsp;&quot;grouname&quot;,//给一组按钮添加开关效果，类似radio的效果，大家自己测试。 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;&quot;button&quot;,&nbsp;//默认button，可以设为submit或reset。 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderTo:&nbsp;Ext.getBody()//指定显示容器，这里设为body，也可以设为某个div，使用容器id作为标示。 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//handler:&nbsp;function(){Ext.Msg.alert('info','this&nbsp;is&nbsp;handler!')} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;test(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert('onevent',&nbsp;'this&nbsp;is&nbsp;test&nbsp;function!'); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//以下是两个比较重要的方法，大家自行测试 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//on用于添加instener &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.on(&quot;mouseover&quot;,&nbsp;test); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//un用于删除listener &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.un(&quot;mouseover&quot;,&nbsp;test); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//以下是常用事件 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//beforedestroy&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//beforehide&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//beforerender&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//beforeshow&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//beforestaterestore&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this,&nbsp;Object&nbsp;state&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//beforestatesave&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this,&nbsp;Object&nbsp;state&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//click&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;EventObject&nbsp;e&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//destroy&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//disable&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//enable&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hide&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//menuhide&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Menu&nbsp;menu&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//menushow&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Menu&nbsp;menu&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//menutriggerout&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Menu&nbsp;menu,&nbsp;EventObject&nbsp;e&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//menutriggerover&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Menu&nbsp;menu,&nbsp;EventObject&nbsp;e&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//mouseout&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Event&nbsp;e&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//mouseover&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Event&nbsp;e&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//render&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//show&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//staterestore&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this,&nbsp;Object&nbsp;state&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//statesave&nbsp;:&nbsp;(&nbsp;Ext.Component&nbsp;this,&nbsp;Object&nbsp;state&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//toggle&nbsp;:&nbsp;(&nbsp;Button&nbsp;this,&nbsp;Boolean&nbsp;pressed&nbsp;)&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//以下是常用方法 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addClass(&nbsp;string&nbsp;cls&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addEvents(&nbsp;Object&nbsp;object&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addListener(&nbsp;String&nbsp;eventName,&nbsp;Function&nbsp;handler,&nbsp;[Object&nbsp;scope],&nbsp;[Object&nbsp;options]&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//applyToMarkup(&nbsp;String/HTMLElement&nbsp;el&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cloneConfig(&nbsp;Object&nbsp;overrides&nbsp;)&nbsp;:&nbsp;Ext.Component&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//destroy()&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//disable()&nbsp;:&nbsp;Ext.Component&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//enable()&nbsp;:&nbsp;Ext.Component&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//findParentBy(&nbsp;Function&nbsp;fcn,&nbsp;[Object&nbsp;scope]&nbsp;)&nbsp;:&nbsp;Array&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//findParentByType(&nbsp;String/Class&nbsp;xtype&nbsp;)&nbsp;:&nbsp;Container&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//fireEvent(&nbsp;String&nbsp;eventName,&nbsp;Object...&nbsp;args&nbsp;)&nbsp;:&nbsp;Boolean&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//focus()&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//getEl()&nbsp;:&nbsp;Ext.Element&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//getId()&nbsp;:&nbsp;String&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//getItemId()&nbsp;:&nbsp;String&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//getText()&nbsp;:&nbsp;String&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//getXType()&nbsp;:&nbsp;String&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//getXTypes()&nbsp;:&nbsp;String&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hasListener(&nbsp;String&nbsp;eventName&nbsp;)&nbsp;:&nbsp;Boolean&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hasVisibleMenu()&nbsp;:&nbsp;Boolean&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hide()&nbsp;:&nbsp;Ext.Component&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//hideMenu()&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//initComponent()&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//isVisible()&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//isXType(&nbsp;String&nbsp;xtype,&nbsp;[Boolean&nbsp;shallow]&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//on(&nbsp;String&nbsp;eventName,&nbsp;Function&nbsp;handler,&nbsp;[Object&nbsp;scope],&nbsp;[Object&nbsp;options]&nbsp;)&nbsp;:&nbsp;void &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//purgeListeners()&nbsp;:&nbsp;void&nbsp;//删除所有事件监听 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//relayEvents(&nbsp;Object&nbsp;o,&nbsp;Array&nbsp;events&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//removeClass(&nbsp;string&nbsp;cls&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//removeListener(&nbsp;String&nbsp;eventName,&nbsp;Function&nbsp;handler,&nbsp;[Object&nbsp;scope]&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//render(&nbsp;[Element/HTMLElement/String&nbsp;container],&nbsp;[String/Number&nbsp;position]&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//resumeEvents()&nbsp;:&nbsp;void&nbsp;&nbsp;&nbsp;//恢复所有事件监听 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//setDisabled(&nbsp;Boolean&nbsp;disabled&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//setHandler(&nbsp;Function&nbsp;handler,&nbsp;[Object&nbsp;scope]&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//setIconClass(&nbsp;String&nbsp;cls&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//setText(&nbsp;String&nbsp;text&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//setVisible(&nbsp;Boolean&nbsp;visible&nbsp;)&nbsp;:&nbsp;Ext.Component&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//show()&nbsp;:&nbsp;Ext.Component&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//showMenu()&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//suspendEvents()&nbsp;:&nbsp;void&nbsp;&nbsp;//取消所有事件监听，但handler继续有效 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//toggle(&nbsp;[Boolean&nbsp;state]&nbsp;)&nbsp;:&nbsp;void&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//un(&nbsp;String&nbsp;eventName,&nbsp;Function&nbsp;handler,&nbsp;[Object&nbsp;scope]&nbsp;)&nbsp;:&nbsp;void&nbsp;&nbsp;//删除某个事件监听，使removeListener的缩写 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;#&quot;</span><span>&nbsp;</span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">&quot;Ext.log('Hello&nbsp;from&nbsp;the&nbsp;Ext&nbsp;console.');return&nbsp;false;&quot;</span><span class="tag">&gt;</span><span>debug</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;//启用debug窗口 &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/531.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=531</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[轻松掌握ExtJs系列教程一：写在使用ExtJs之前]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-05-22T23:06:46+08:00</updated>
	  <published>2009-05-22T23:06:46+08:00</published>
		  <summary type="html"><![CDATA[<p>使用ExtJs已经一个多月了，先简单说一下我的使用感受。</p>
<p>之所以选择使用ExtJs是被它的GridPanel所吸引，刚好近期有个任务需要使用复杂的Grid，因此没多想就选择了ExtJs。</p>
<p>刚开始一切很顺利，网上例子很多，东挪西凑一个漂亮的grid就出来了。但随着不断深入，麻烦也越来越多，在很多细节上，用ExtJs的确不是很方便，例如layout就是一个难点，我都现在都没有做出完美的效果。那段时期真的非常痛苦，很多次真想用传统的方法推倒重来。但ExtJs GridPanel的丰富功能的确令人难以割舍，况且我不想放弃这个学习ExtJs的大好机会，这次放弃了，以后相信就没多大机会能用上了。</p>
<p>做开发就和长跑一样，中间总会有段觉得辛苦而想放弃的阶段，但一旦撑过去，一切就显得海阔天空，游刃有余。以下是我做的grid，一行html都没写，全部用js来实现，一共写了1500多行js代码，几乎所有功能都用上了，碰到很多疑难杂症也一一解决，具体我已记录在《ExtJs疑难杂症》系列文章里。</p>
<p><img class="boxinner" alt="" src="http://falaosao.net/attachments/All_Files/52009522223917.jpg" /></p>
<p>这个项目，我只在一个页面使用了ExtJs，其他页面我还是使用JQuery。因为我觉得ExtJs的UI理念，不是短期内能适应的。ExtJs提倡UI层应该用js来实现，哪怕是一个dom对象，也应该通过js来生成而不应该直接写在html里。页面的布局类型，也封装在ExtJs里，用户不能自由调动页面布局，如非对ExtJs有深刻的理解，开发者很难随心所欲做出自己想要的界面。而且ExtJS是一个重量级js框架，大量使用很难保证IE的性能，个人觉得它只适用于局域网的OA系统，如果把它放在广域网，相信开发者会被一堆堆跨浏览器问题，异步调用问题，js调试问题而拖死。</p>
<p>我简单举个例子，ExtJs在实现一个alert功能时，会向客户端输出什么代码？</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span>Ext.onReady(</span><span class="keyword">function</span><span>(){ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;Ext.Msg.alert(</span><span class="string">'bonjour'</span><span>,</span><span class="string">'hello&nbsp;god!'</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>});&nbsp;&nbsp;</span></li>
</ol>
</div>
<p><img class="boxinner" alt="" src="http://falaosao.net/attachments/All_Files/z2009522225351.jpg" /></p>
<p>用IE deveploer Toolbar查看页面的dom对象，发现代码是惊人的多！！</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span>&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;&quot;-//W3C//DTD&nbsp;HTML&nbsp;Transitional//EN&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">HTML</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">HEAD</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">TITLE</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">TITLE</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">LINK</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;resources/css/ext-all.css&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/css&quot;</span><span>&nbsp;</span><span class="attribute">rel</span><span>=</span><span class="attribute-value">&quot;stylesheet&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">SCRIPT</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;adapter/jquery/jquery.js&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">SCRIPT</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">SCRIPT</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;adapter/jquery/ext-jquery-adapter.js&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">SCRIPT</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">SCRIPT</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;ext-all.js&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">SCRIPT</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><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">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Ext.onReady(function(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert('bonjour','hello&nbsp;god!'); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">SCRIPT</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">HEAD</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">BODY</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;&nbsp;&nbsp;ext-ie&nbsp;ext-ie7&nbsp;ext-border-box&nbsp;x-body-masked&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen6&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-proxy&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen47&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;none&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-el-mask&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen48&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;block;&nbsp;Z-INDEX:&nbsp;9000;&nbsp;WIDTH:&nbsp;1400px;&nbsp;HEIGHT:&nbsp;534px&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;13&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-ie-shadow&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen72&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;block;&nbsp;Z-INDEX:&nbsp;9002;&nbsp;FILTER:&nbsp;progid:DXImageTransform.Microsoft.alpha(opacity=50)&nbsp;progid:DXImageTransform.Microsoft.Blur(pixelradius=4);&nbsp;LEFT:&nbsp;635px;&nbsp;WIDTH:&nbsp;104px;&nbsp;TOP:&nbsp;211px;&nbsp;HEIGHT:&nbsp;105px&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window&nbsp;x-window-plain&nbsp;x-window-dlg&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-comp-1001&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;block;&nbsp;Z-INDEX:&nbsp;9003;&nbsp;LEFT:&nbsp;640px;&nbsp;VISIBILITY:&nbsp;visible;&nbsp;WIDTH:&nbsp;100px;&nbsp;POSITION:&nbsp;absolute;&nbsp;TOP:&nbsp;214px&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;14&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-tl&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-tr&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-tc&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-header&nbsp;x-unselectable&nbsp;x-window-draggable&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen7&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;MozUserSelect:&nbsp;none;&nbsp;KhtmlUserSelect:&nbsp;none&quot;</span><span>&nbsp;</span><span class="attribute">unselectable</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;3&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-tool&nbsp;x-tool-close&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen52&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;block&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;15&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">SPAN</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-header-text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen50&quot;</span><span class="tag">&gt;</span><span>bonjour</span><span class="tag">&lt;/</span><span class="tag-name">SPAN</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-bwrap&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen8&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-ml&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-mr&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-mc&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-body&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen9&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;88px;&nbsp;HEIGHT:&nbsp;auto&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen59&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-mb-icon&nbsp;x-hidden&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen60&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-mb-content&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">SPAN</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-mb-text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen61&quot;</span><span class="tag">&gt;</span><span>hello&nbsp;god!</span><span class="tag">&lt;/</span><span class="tag-name">SPAN</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">BR</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-mb-fix-cursor&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">INPUT</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-mb-input&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen62&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;none&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;16&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;</span><span class="tag-name">TEXTAREA</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;ext-mb-textarea&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen64&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;DISPLAY:&nbsp;none&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">TEXTAREA</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-progress-wrap&nbsp;x-hide-display&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-comp-1006&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-progress-inner&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-progress-bar&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen66&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;0px;&nbsp;HEIGHT:&nbsp;18px&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-progress-text&nbsp;&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen67&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;Z-INDEX:&nbsp;99;&nbsp;WIDTH:&nbsp;0px&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen69&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;364px;&nbsp;HEIGHT:&nbsp;18px&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-progress-text&nbsp;x-progress-text-back&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen68&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen70&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;364px;&nbsp;HEIGHT:&nbsp;18px&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-clear&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen71&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-bl&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-br&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-bc&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-window-footer&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen10&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-panel-btns-ct&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-panel-btns&nbsp;x-panel-btns-center&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TABLE</span><span>&nbsp;</span><span class="attribute">cellSpacing</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-panel-btn-td&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen13&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TABLE</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-wrap&nbsp;x-btn&nbsp;&nbsp;x-btn-focus&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-comp-1002&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;75px&quot;</span><span>&nbsp;</span><span class="attribute">cellSpacing</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">cellPadding</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">border</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;5&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-left&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-center&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">EM</span><span>&nbsp;</span><span class="attribute">unselectable</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">BUTTON</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen15&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;4&quot;</span><span class="tag">&gt;</span><span>OK</span><span class="tag">&lt;/</span><span class="tag-name">BUTTON</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">EM</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-right&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TABLE</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-panel-btn-td&nbsp;x-hide-offsets&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen21&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TABLE</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-wrap&nbsp;x-btn&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-comp-1003&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;75px&quot;</span><span>&nbsp;</span><span class="attribute">cellSpacing</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">cellPadding</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">border</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;7&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-left&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-center&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">EM</span><span>&nbsp;</span><span class="attribute">unselectable</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">BUTTON</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen23&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;6&quot;</span><span class="tag">&gt;</span><span>Yes</span><span class="tag">&lt;/</span><span class="tag-name">BUTTON</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">EM</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-right&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TABLE</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-panel-btn-td&nbsp;x-hide-offsets&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen29&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TABLE</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-wrap&nbsp;x-btn&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-comp-1004&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;75px&quot;</span><span>&nbsp;</span><span class="attribute">cellSpacing</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">cellPadding</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">border</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;9&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-left&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-center&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">EM</span><span>&nbsp;</span><span class="attribute">unselectable</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">BUTTON</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen31&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;8&quot;</span><span class="tag">&gt;</span><span>No</span><span class="tag">&lt;/</span><span class="tag-name">BUTTON</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">EM</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-right&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TABLE</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-panel-btn-td&nbsp;x-hide-offsets&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen37&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TABLE</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-wrap&nbsp;x-btn&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-comp-1005&quot;</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;WIDTH:&nbsp;75px&quot;</span><span>&nbsp;</span><span class="attribute">cellSpacing</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">cellPadding</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">border</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;11&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-left&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-center&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">EM</span><span>&nbsp;</span><span class="attribute">unselectable</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">BUTTON</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-text&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen39&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span class="tag">&gt;</span><span>Cancel</span><span class="tag">&lt;/</span><span class="tag-name">BUTTON</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">EM</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TD</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-btn-right&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">I</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TABLE</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TR</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TBODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">TABLE</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">DIV</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-clear&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">A</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;x-dlg-focus&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ext-gen45&quot;</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;file:///F:/Downloads/ext-2.2.1/example.htm#&quot;</span><span>&nbsp;</span><span class="attribute">jQuery1243001417109</span><span>=</span><span class="attribute-value">&quot;12&quot;</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">A</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">DIV</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">BODY</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">HTML</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>这只是最简单的alert功能，可见华丽的效果不是三言两语可以完成的，上面就是个典型例子。</p>
<p>因此，在本教程开始之前，我奉劝大家在选择使用ExtJs之前一定要深思熟虑，一旦决定使用，就不要轻易放弃，ExtJs的确是一个优秀的框架，我们需要考虑的，是在开发成本，维护成本，IE性能和ExtJs强大华丽的功能之间作一个权衡。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/530.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=530</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ExtJs疑难杂症之ComboBox选项filter问题]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-05-12T21:51:30+08:00</updated>
	  <published>2009-05-12T21:51:30+08:00</published>
		  <summary type="html"><![CDATA[<p>如果有多个同类型的ComboBox，个人觉得最好的加载方法是加载一个store，然后通过filter方法筛选出需要的选择项，这样切换ComboBox就不用请求单独的store了。但这里似乎又有点问题。</p>
<p><strong>版本：</strong>2.2</p>
<p><strong>症状：</strong></p>
<p>如以下代码所示，store执行filter后ComboBox的选项并不会改变，但打印store.getCount()时发现选项数目已经发生变化，只是ComboBox没展示出来。</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span>var&nbsp;comboBoxFilter&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Ext.form.ComboBox({ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;store:&nbsp;basekeyStore, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayField:&nbsp;</span><span class="string">&quot;basekeyName&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueField:&nbsp;</span><span class="string">&quot;basekeyID&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeAhead:&nbsp;</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode:&nbsp;</span><span class="string">'local'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forceSelection:&nbsp;</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triggerAction:&nbsp;</span><span class="string">'all'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectOnFocus:</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazyRender:</span><span class="keyword">true</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>basekeyStore.filter(</span><span class="string">&quot;basekeyTypdID&quot;</span><span>,&nbsp;</span><span class="string">&quot;3&quot;</span><span>);</span><span class="comment">//使用filter</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>根据官方解释：ComboBox有内建的filter方法，因此会冲掉你设在store上的filter。</p>
<p><strong>解决办法：</strong>在store执行完filter后，先把原来snapshot保存起来，然后再把filter出来的结果覆盖原来的snapshot。还原时把原来的snapshot还原回来，然后再clearfilter。</p>
<p>代码如下：</p>
<p>先写两个function用于filter的增删，实现思想如上所述。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;clearBasekeyStoreFilter(){</span><span class="comment">//清除filter函数 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basekeyStore.snapshot&nbsp;=&nbsp;basekeyStore.realSnapshot; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">delete</span><span>&nbsp;basekeyStore.realSnapshot; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basekeyStore.clearFilter(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">function</span><span>&nbsp;createBasekeyStoreFilter(typeid){</span><span class="comment">//创建filter函数 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basekeyStore.filter(</span><span class="string">'basekeyTypeID'</span><span>,&nbsp;typeid); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basekeyStore.realSnapshot&nbsp;=&nbsp;basekeyStore.snapshot; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basekeyStore.snapshot&nbsp;=&nbsp;basekeyStore.data; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>ComboBox正常绑定即可，但需要找时机创建和删除filter，我选择在expand和collapse事件中处理。</p>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">Java代码</div>
<ol class="dp-j">
    <li class="alt"><span><span>var&nbsp;comboBoxFilter&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Ext.form.ComboBox({ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;store:&nbsp;basekeyStore, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayField:&nbsp;</span><span class="string">&quot;basekeyName&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueField:&nbsp;</span><span class="string">&quot;basekeyID&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeAhead:&nbsp;</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode:&nbsp;</span><span class="string">'local'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forceSelection:&nbsp;</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triggerAction:&nbsp;</span><span class="string">'all'</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectOnFocus:</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazyRender:</span><span class="keyword">true</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>comboBoxFilter.on(</span><span class="string">'expand'</span><span>,&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;function(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createBasekeyStoreFilter(</span><span class="string">'3'</span><span>);</span><span class="comment">//ComboBox展开时提供filter条件执行filter </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>comboBoxFilter.on(</span><span class="string">'collapse'</span><span>,&nbsp;function(){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearBasekeyStoreFilter();</span><span class="comment">//ComboBox收拢时清理filter。 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>);&nbsp;&nbsp;</span></li>
</ol>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/525.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=525</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ExtJs疑难杂症之formPanel动态添加FieldSet导致验证失效]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-05-08T23:24:34+08:00</updated>
	  <published>2009-05-08T23:24:34+08:00</published>
		  <summary type="html"><![CDATA[<p>这个标题非常拗口，但应该能帮助遇到同样问题的朋友baidu到这里。baidu+google了一下午都没找到答案，发这文章时国内似乎还没有人碰到这个问题，至少没有发相关的帖子出来。但国外被这螃蟹噎到的ExtJs用户已经数不胜数了，还是google见多识广啊~</p>
<p><strong>版本：</strong>2.2打防memory leak补丁版</p>
<p><strong>症状：</strong></p>
<p>当使用add方法在formPanel中动态添加FieldSet时，尽管控件重绘正常，但form.isValid()只会返回true，打印form.items.length时也显示没有新的组件添加进来，但实际上无论render还是submit都是正常的，唯独validate不正常。问题代码如下：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span class="comment">//Create&nbsp;the&nbsp;Form </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;testForm&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Ext.form.FormPanel({ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;</span><span class="string">&quot;form1&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame:</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;350, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:&nbsp;[{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xtype:&nbsp;</span><span class="string">&quot;textfield&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;</span><span class="string">&quot;nom&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:&nbsp;</span><span class="string">&quot;nom&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBlank:&nbsp;</span><span class="keyword">false</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">//Render&nbsp;the&nbsp;form </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testForm.render(Ext.get(</span><span class="string">'idForm'</span><span>));&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">//Create&nbsp;the&nbsp;fieldset </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testFieldSet&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Ext.form.FieldSet({ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;</span><span class="string">'testFieldSet'</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoHeight:&nbsp;</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:&nbsp;[{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xtype&nbsp;:&nbsp;</span><span class="string">&quot;textfield&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;:&nbsp;</span><span class="string">&quot;testtextvalid&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:&nbsp;</span><span class="string">&quot;testDyn&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBlank:&nbsp;</span><span class="keyword">false</span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}] &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testForm.add(testFieldSet);&nbsp;</span><span class="comment">//add&nbsp;the&nbsp;fieldset&nbsp;to&nbsp;the&nbsp;formpanel </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testFieldSet.doLayout(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;testForm.doLayout();&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>关于这个bug的解析和解决办法如下（原文地址：<a href="http://extjs.com/forum/showthread.php?t=41093">http://extjs.com/forum/showthread.php?t=41093</a>）：</p>
<div id="post_message_194247">Containers need to be aware of what they contain.<br />
<br />
Most only need to know their <i>immediate</i> children, and so their add method is sufficient.<br />
<br />
However, for example a FormPanel, needs to know when Fields are added and removed at any depth in its Component tree so that it can update the Field Collection in its BasicForm.<br />
<br />
There have been bug reports that after dynamic adding of <b>Containers</b> to a FormPanel, or of Fields to nested Containers, the BasicForm does not know about those new fields to load.<br />
<br />
So I propose two new template methods starting at the Component class level.<br />
<br />
<b>onAdd</b> and <b>onRemove</b><br />
<br />
&quot;Template methods&quot; might not be the best name because they don't bubble up the inheritance chain, they bubble up the <b><u>ownerCt</u></b> chain.<br />
<br />
so Container would have the following new code in red:<br />
<br />
<div class="codeblock" style="margin: 5px 20px 20px">
<pre dir="ltr">
    add : function(comp){
        if(!this.items){
            this.initItems();
        }
        var a = arguments, len = a.length;
        if(len &gt; 1){
            for(var i = 0; i &lt; len; i++) {
                this.add(a[i]);
            }
            return;
        }
        var c = this.lookupComponent(this.applyDefaults(comp));
        var pos = this.items.length;
        if(this.fireEvent('beforeadd', this, c, pos) !== false &amp;&amp; this.onBeforeAdd(c) !== false){
            this.items.add(c);
            c.ownerCt = this;
            <font color="#ff0000">this.onAdd(c);</font>
            this.fireEvent('add', this, c, pos);
        }
        return c;
    },

    insert : function(index, comp){
        if(!this.items){
            this.initItems();
        }
        var a = arguments, len = a.length;
        if(len &gt; 2){
            for(var i = len-1; i &gt;= 1; --i) {
                this.insert(index, a[i]);
            }
            return;
        }
        var c = this.lookupComponent(this.applyDefaults(comp));

        if(c.ownerCt == this &amp;&amp; this.items.indexOf(c) &lt; index){
            --index;
        }

        if(this.fireEvent('beforeadd', this, c, index) !== false &amp;&amp; this.onBeforeAdd(c) !== false){
            this.items.insert(index, c);
            c.ownerCt = this;
            <font color="#ff0000">this.onAdd(c);</font>
            this.fireEvent('add', this, c, index);
        }
        return c;
    },

    remove : function(comp, autoDestroy){
        var c = this.getComponent(comp);
        if(c &amp;&amp; this.fireEvent('beforeremove', this, c) !== false){
            this.items.remove(c);
            delete c.ownerCt;
            if(autoDestroy === true || (autoDestroy !== false &amp;&amp; this.autoDestroy)){
                c.destroy();
            }
            if(this.layout &amp;&amp; this.layout.activeItem == c){
                delete this.layout.activeItem;
            }
            <font color="#ff0000">this.onRemove(c);</font>
            this.fireEvent('remove', this, c);
        }
        return c;
    },

<font color="#ff0000">//  private
//  Inform all ancestor Containers of an addition to their Component tree
    onAdd: function() {
        if (this.ownerCt &amp;&amp; this.ownerCt.onAdd) {
            this.ownerCt.onAdd.apply(this.ownerCt, arguments)
        }
    },

//  private
//  Inform all ancestor Containers of a removal from their Component tree
    onRemove: function() {
        if (this.ownerCt &amp;&amp; this.ownerCt.onRemove) {
            this.ownerCt.onRemove.apply(this.ownerCt, arguments)
        }
    }</font></pre>
</div>
Then FormPanel would have<br />
<br />
<div class="codeblock" style="margin: 5px 20px 20px">
<pre dir="ltr"><font color="#ff0000">
//  Determine if a Component is usable as a form Field.
    isField: function(c) {
        return !!c.setValue &amp;&amp; !!c.getValue &amp;&amp; !!c.markInvalid &amp;&amp; !!c.clearInvalid;
    },

    onAdd : function(c) {
        Ext.form.FormPanel.superclass.onAdd.apply(this, arguments);
//      If a single form Field, add it
        if (this.isField(c)) {
            this.form.add(c);

//      If a Container, add any Fields it might contain
        } else if (c.findBy) {
            this.form.add.apply(this.form, c.findBy(this.isField));
        }
    },

    onRemove : function(c) {
        Ext.form.FormPanel.superclass.onRemove.apply(this, arguments);
//      If a single form Field, remove it
        if (this.isField(c)) {
            Ext.destroy(c.container.up('.x-form-item'));
            this.form.remove(c);

//      If a Container, remove any Fields it might contain
        } else if (c.findByType) {
            Ext.each(c.findBy(this.isField), this.form.remove, this.form);
        }
    },</font></pre>
</div>
Untested code, but that's the principle.<br />
<br />
You see that it uses find by type which uses <b>isXType</b> which, as discusses on another thread gives up testing the inheritance chain for an xtype match as soon as it hits a constructor with no xtype...</div>
<div>&nbsp;</div>
<div>上面是根本性的解决办法。</div>
<div>&nbsp;</div>
<div>但对于大部分用户，我还是建议用以下workaround代替。</div>
<div>&nbsp;</div>
<div><strong>解决办法：</strong></div>
<div>&nbsp;</div>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span>//Create&nbsp;the&nbsp;Form &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span><span class="attribute">testForm</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">new</span><span>&nbsp;Ext.form.FormPanel({ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;&quot;form1&quot;, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame:true, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;350, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:&nbsp;[{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xtype:&nbsp;&quot;textfield&quot;, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;&quot;nom&quot;, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:&nbsp;&quot;nom&quot;, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBlank:&nbsp;false &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;//Render&nbsp;the&nbsp;form &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testForm.render(Ext.get('idForm'));&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;//Create&nbsp;the&nbsp;fieldset &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span><span class="attribute">testFieldSet</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">new</span><span>&nbsp;Ext.form.FieldSet({ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;'testFieldSet', &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoHeight:&nbsp;true, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:&nbsp;[{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xtype&nbsp;:&nbsp;&quot;textfield&quot;, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;:&nbsp;&quot;testtextvalid&quot;, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldLabel:&nbsp;&quot;testDyn&quot;, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowBlank:&nbsp;false &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}] &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testForm.add(testFieldSet);&nbsp;//add&nbsp;the&nbsp;fieldset&nbsp;to&nbsp;the&nbsp;formpanel &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;testForm.doLayout(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>===========this&nbsp;is&nbsp;the&nbsp;</span><span class="attribute">workaround</span><span>============&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span><span class="attribute">testFieldSet.form</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">testForm</span><span>.getForm(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;testForm.initFields.call(testFieldSet); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;//delete&nbsp;testForm.form;原来是有这一行的，但加上后连getForm()都不好用了，去掉就没问题了 &nbsp;&nbsp;</span></li>
    <li class="alt"><span>===========this&nbsp;is&nbsp;the&nbsp;</span><span class="attribute">workaround</span><span>============&nbsp;&nbsp;</span></li>
</ol>
</div>
<!-- / message --><!-- sig -->
<p>OK，一切恢复正常！</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/524.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=524</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Extjs疑难杂症之EditorGridPanel滚动条自动右移]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-05-06T22:37:25+08:00</updated>
	  <published>2009-05-06T22:37:25+08:00</published>
		  <summary type="html"><![CDATA[<p><strong>版本：</strong>Ext 2.2</p>
<p><strong>症状：</strong>使用EditorGridPannel时，只要对列的条目进行增减操作，然后再启用就地编辑。那么在结束编辑状态后，EditorGridPannel的滚动条就会自动向右滚动，将编辑条目所在列定位在EditorGridPannel可视范围的最左边。文字表述不清楚可以看下图。</p>
<p>编辑某行某列数据，EditorGridPannel进入编辑状态。</p>
<p><img class="boxinner" alt="" src="http://falaosao.net/attachments/All_Files/i200956222527.jpg" /></p>
<p>离开编辑状态后，EditorGridPannel自动向右滚动。</p>
<p><strong><img class="boxinner" alt="" src="http://falaosao.net/attachments/All_Files/420095622405.jpg" /></strong></p>
<p><strong>解决办法：</strong></p>
<p>打开ext-all-debug.js，找到EditorGridPannel部分代码，把红色部分代码注释掉，问题解决！</p>
<p>&nbsp;大家有兴趣也可以修改focusCell函数，让它定位到屏幕中间。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span class="comment">//&nbsp;private </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;onEditComplete&nbsp;:&nbsp;</span><span class="keyword">function</span><span>(ed,&nbsp;value,&nbsp;startValue){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.editing&nbsp;=&nbsp;</span><span class="keyword">false</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.activeEditor&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ed.un(</span><span class="string">&quot;specialkey&quot;</span><span>,&nbsp;</span><span class="keyword">this</span><span>.selModel.onEditorKey,&nbsp;</span><span class="keyword">this</span><span>.selModel); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;r&nbsp;=&nbsp;ed.record; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;field&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.colModel.getDataIndex(ed.col); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.postEditValue(value,&nbsp;startValue,&nbsp;r,&nbsp;field); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(String(value)&nbsp;!==&nbsp;String(startValue)){ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;e&nbsp;=&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grid:&nbsp;</span><span class="keyword">this</span><span>, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record:&nbsp;r, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field:&nbsp;field, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;originalValue:&nbsp;startValue, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;value, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row:&nbsp;ed.row, &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column:&nbsp;ed.col, &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cancel:</span><span class="keyword">false</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="keyword">this</span><span>.fireEvent(</span><span class="string">&quot;validateedit&quot;</span><span>,&nbsp;e)&nbsp;!==&nbsp;</span><span class="keyword">false</span><span>&nbsp;&amp;&amp;&nbsp;!e.cancel){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r.set(field,&nbsp;e.value); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">delete</span><span>&nbsp;e.cancel; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.fireEvent(</span><span class="string">&quot;afteredit&quot;</span><span>,&nbsp;e); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: red">this.view.focusCell(ed.row,&nbsp;ed.col); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;注意，如果是修改ext-all.js，应该修改这里</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">delete</span><span>&nbsp;g.cancel;</span><span class="keyword">this</span><span>.fireEvent(</span><span class="string">&quot;afteredit&quot;</span><span>,g)}}</span><span class="comment">/*this.view.focusCell(b.row,b.col)*/</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/522.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=522</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[用sql语句判断防火墙策略]]></title>
	  <author>
		 <name>GDNPC</name>
		 <uri>http://www.falaosao.net/</uri>
		 <email>GDNPC@163.com</email>
	  </author>
	  <category term="" scheme="http://www.falaosao.net/default.asp?cateID=5" label="技术积累" /> 
	  <updated>2009-03-14T14:10:32+08:00</updated>
	  <published>2009-03-14T14:10:32+08:00</published>
		  <summary type="html"><![CDATA[<p>去年做系统有个模块需要判断防火墙策略。</p>
<p>例如添加一条策略：10.10.10.24:20000 到10.20.20.24:20000</p>
<p>添加前需要做以下判断。</p>
<p>假如大策略：10.10.10.0/24:20000到10.20.20.0/24:20000已经存在，那么以上策略是不需要添加的。</p>
<p>否则则需要添加到数据库。</p>
<p>数据库表设计如下：</p>
<p>create table RSMS_FIREWALLS<br />
(<br />
&nbsp; ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(4) not null,<br />
&nbsp; FW_SIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(15),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------源地址<br />
&nbsp; FW_OIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(15),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------目标地址<br />
&nbsp; FW_SSUBNET&nbsp;&nbsp; NUMBER(2),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------源地址mask<br />
&nbsp; FW_OSUBNET&nbsp;&nbsp; NUMBER(2),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------目标地址mask<br />
&nbsp; FW_PORTSTART NUMBER(5),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------开始端口<br />
&nbsp; FW_PORTEND&nbsp;&nbsp; NUMBER(5),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------结束端口<br />
&nbsp; OIP1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------目标地址第一位ip值<br />
&nbsp; OIP2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------目标地址第二位ip值<br />
&nbsp; OIP3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------目标地址第三位ip值<br />
&nbsp; OIP4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------目标地址第四位ip值<br />
&nbsp; SIP1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------源地址第一位ip值<br />
&nbsp; SIP2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------源地址第二位ip值<br />
&nbsp; SIP3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------源地址第三位ip值<br />
&nbsp; SIP4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------源地址第四位ip值<br />
&nbsp; SMAXIP1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------在当前mask下源地址第一位ip最大值<br />
&nbsp; SMAXIP2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------在当前mask下源地址第二位ip最大值<br />
&nbsp; SMAXIP3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------在当前mask下源地址第三位ip最大值<br />
&nbsp; SMAXIP4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------在当前mask下源地址第四位ip最大值<br />
&nbsp; OMAXIP1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------在当前mask下目标地址第一位ip最大值<br />
&nbsp; OMAXIP2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------在当前mask下目标地址第二位ip最大值<br />
&nbsp; OMAXIP3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------在当前mask下目标地址第三位ip最大值<br />
&nbsp; OMAXIP4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER(3),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------在当前mask下目标地址第四位ip最大值<br />
)</p>
<p>策略写入数据库后根据mask算出ip各个位的最大值，</p>
<p>例如：10.10.10.0/24,maxip1=10,maxip2=10,maxip3=10,maxip4=255</p>
<p>又如：10.10.10.0/23,maxip1=10,maxip2=10,maxip3=11,maxip4=255</p>
<p>如此类推。</p>
<p>判断sql语句如下(ibatis)，原理是根据mask判断当前策略是否被数据库中已有策略包含。</p>
<p>Select<br />
&nbsp;&nbsp;&nbsp;distinct(id)<br />
&nbsp;&nbsp;FROM<br />
&nbsp;&nbsp;&nbsp;rsms_firewalls<br />
&nbsp;&nbsp;Where<br />
&nbsp;&nbsp;&nbsp;(sip1 = #sip1# and sip2 = #sip2# and sip3 = #sip3# and sip4 &amp;lt;= #sip4# and #sip4# &amp;lt;= smaxip4 and fw_ssubnet between 24 and 32<br />
&nbsp;&nbsp;&nbsp;AND (<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 = #oip3# and oip4 &amp;lt;= #oip4# and #oip4# &amp;lt;= omaxip4 and fw_osubnet between 24 and 32)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 &amp;lt;= #oip3# and #oip3# &amp;lt;= omaxip3 and fw_osubnet between 16 and 23)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 &amp;lt;= #oip2# and #oip2# &amp;lt;= omaxip2 and fw_osubnet between 8 and 15)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 &amp;lt;= #oip1# and #oip1# &amp;lt;= omaxip1 and fw_osubnet between 0 and 7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;(fw_portstart &amp;lt;= #fwPortStart#<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;fw_portend &amp;gt;= #fwPortEnd#)<br />
&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp; or<br />
&nbsp;&nbsp;&nbsp;(sip1 = #sip1# and sip2 = #sip2# and sip3 &amp;lt;= #sip3# and #sip3# &amp;lt;= smaxip3 and fw_ssubnet between 16 and 23<br />
&nbsp;&nbsp;&nbsp;AND (<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 = #oip3# and oip4 &amp;lt;= #oip4# and #oip4# &amp;lt;= omaxip4 and fw_osubnet between 24 and 32)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 &amp;lt;= #oip3# and #oip3# &amp;lt;= omaxip3 and fw_osubnet between 16 and 23)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 &amp;lt;= #oip2# and #oip2# &amp;lt;= omaxip2 and fw_osubnet between 8 and 15)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 &amp;lt;= #oip1# and #oip1# &amp;lt;= omaxip1 and fw_osubnet between 0 and 7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;(fw_portstart &amp;lt;= #fwPortStart#<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;fw_portend &amp;gt;= #fwPortEnd#)<br />
&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;(sip1 = #sip1# and sip2 &amp;lt;= #sip2# and #sip2# &amp;lt;= smaxip2 and fw_ssubnet between 8 and 15<br />
&nbsp;&nbsp;&nbsp;AND (<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 = #oip3# and oip4 &amp;lt;= #oip4# and #oip4# &amp;lt;= omaxip4 and fw_osubnet between 24 and 32)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 &amp;lt;= #oip3# and #oip3# &amp;lt;= omaxip3 and fw_osubnet between 16 and 23)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 &amp;lt;= #oip2# and #oip2# &amp;lt;= omaxip2 and fw_osubnet between 8 and 15)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 &amp;lt;= #oip1# and #oip1# &amp;lt;= omaxip1 and fw_osubnet between 0 and 7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;(fw_portstart &amp;lt;= #fwPortStart#<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;fw_portend &amp;gt;= #fwPortEnd#)<br />
&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;(sip1 &amp;lt;= #sip1# and #sip1# &amp;lt;= smaxip1 and fw_ssubnet between 0 and 7<br />
&nbsp;&nbsp;&nbsp;AND (<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 = #oip3# and oip4 &amp;lt;= #oip4# and #oip4# &amp;lt;= omaxip4 and fw_osubnet between 24 and 32)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 = #oip2# and oip3 &amp;lt;= #oip3# and #oip3# &amp;lt;= omaxip3 and fw_osubnet between 16 and 23)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 = #oip1# and oip2 &amp;lt;= #oip2# and #oip2# &amp;lt;= omaxip2 and fw_osubnet between 8 and 15)<br />
&nbsp;&nbsp;&nbsp;&nbsp;OR<br />
&nbsp;&nbsp;&nbsp;&nbsp;(oip1 &amp;lt;= #oip1# and #oip1# &amp;lt;= omaxip1 and fw_osubnet between 0 and 7)<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;(fw_portstart &amp;lt;= #fwPortStart#<br />
&nbsp;&nbsp;&nbsp;AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;fw_portend &amp;gt;= #fwPortEnd#)<br />
&nbsp;&nbsp;&nbsp;)</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.falaosao.net/article/tech/521.htm" /> 
	  <id>http://www.falaosao.net/default.asp?id=521</id>
  </entry>	
		
</feed>
