<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>戈壁滩上的狗尾巴花 &#187; Tree</title>
	<atom:link href="http://liguoliang.com/tag/tree/feed/" rel="self" type="application/rss+xml" />
	<link>http://liguoliang.com</link>
	<description>戈壁滩上盛开的一坨狗尾巴花</description>
	<lastBuildDate>Wed, 08 Sep 2010 13:03:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Flex: CheckBox Tree</title>
		<link>http://liguoliang.com/2010/flex-checkbox-tree/</link>
		<comments>http://liguoliang.com/2010/flex-checkbox-tree/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 12:14:17 +0000</pubDate>
		<dc:creator>老李</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tree]]></category>
		<category><![CDATA[Tree Checkbox]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2010/03/1164/</guid>
		<description><![CDATA[<p>效果与功能:</p>
<p><a href="http://liguoliang.com/wp-content/uploads/2010/03/image4.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="487" alt="image" src="http://liguoliang.com/wp-content/uploads/2010/03/image_thumb3.png" width="222" border="0" /></a> </p>
<p>1. 简单配置数据源即可实现多层显示    <br />2. 可设定初始选定的项目或目录     <br />3. 获得选定的项目</p>
<p> </p>]]></description>
			<content:encoded><![CDATA[<p>效果与功能:</p>
<p><a href="http://liguoliang.com/wp-content/uploads/2010/03/image4.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="487" alt="image" src="http://liguoliang.com/wp-content/uploads/2010/03/image_thumb3.png" width="222" border="0" /></a> </p>
<p>1. 简单配置数据源即可实现多层显示    <br />2. 可设定初始选定的项目或目录     <br />3. 获得选定的项目</p>
<p> <span id="more-1164"></span><br />
<hr />
<p>关于Flex CheckBox Tree的例子有很多, 如:</p>
<p> 3 State CheckBox Tree: <a title="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;extid=1047969#" href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;extid=1047969#">http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;extid=1047969#</a>
<p>CheckBoxTree Component (Adobe Flex 3): <a title="http://srirangan.net/?p=56" href="http://srirangan.net/?p=56">http://srirangan.net/?p=56</a> </p>
<p>Flex Checkbox TreeItemRenderer: <a title="http://remwebdevelopment.com/dev/a31/Flex-Checkbox-TreeItemRenderer.html" href="http://remwebdevelopment.com/dev/a31/Flex-Checkbox-TreeItemRenderer.html">http://remwebdevelopment.com/dev/a31/Flex-Checkbox-TreeItemRenderer.html</a></p>
<p>FLEX 构建完美的带有CheckBox三状态的Tree控件: <a title="http://blog.csdn.net/cjy37/archive/2009/05/11/4166621.aspx" href="http://blog.csdn.net/cjy37/archive/2009/05/11/4166621.aspx">http://blog.csdn.net/cjy37/archive/2009/05/11/4166621.aspx</a></p>
<p>Flex在Tree控件上添加CheckBox: <a title="http://montage.javaeye.com/blog/326302" href="http://montage.javaeye.com/blog/326302">http://montage.javaeye.com/blog/326302</a></p>
<p>但上述举例均有一个非常明显的问题: MVC没有分清楚, 是否选定基本上都存储在数据源中, 实际上这只是UI的一个状态, 因此个人认为, 是否选中, 不应该存放于Modeling中. 因此写下面两个类.</p>
<p><a href="http://liguoliang.com/wp-content/uploads/2010/03/image5.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="360" alt="image" src="http://liguoliang.com/wp-content/uploads/2010/03/image_thumb4.png" width="697" border="0" /></a></p>
<p>具体使用方法, 请参考代码.</p>
<blockquote><p>转载本文或使用代码请注明出处或保留注释中的版权信息.</p>
</blockquote>
<p>代码下载: <a title="http://www.box.net/shared/q6r915j4qr" href="http://www.box.net/shared/q6r915j4qr">http://www.box.net/shared/q6r915j4qr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2010/flex-checkbox-tree/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex Tree ToolTip 设定</title>
		<link>http://liguoliang.com/2009/flex-tree-tooltip-%e8%ae%be%e5%ae%9a/</link>
		<comments>http://liguoliang.com/2009/flex-tree-tooltip-%e8%ae%be%e5%ae%9a/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 09:18:16 +0000</pubDate>
		<dc:creator>老李</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[dataTipFunction]]></category>
		<category><![CDATA[ToolTip]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2009/10/1063/</guid>
		<description><![CDATA[<p>为节点或叶子设定其特有之ToolTip:</p>
	// Constructor
	public function TreeForCodeMaintain(codeMaintainService_:ICodeMaintainService) {
		super();
		_codeMaintainServi]]></description>
			<content:encoded><![CDATA[<p>为节点或叶子设定其特有之ToolTip:</p>
<pre class="java" name="code">	// Constructor
	public function TreeForCodeMaintain(codeMaintainService_:ICodeMaintainService) {
		super();
		_codeMaintainService = codeMaintainService_;
		dataProvider =  dataProvider = [&quot;code1&quot;, &quot;code2&quot;, &quot;code3&quot;, [&quot;folder1&quot;, [&quot;subCode1&quot;, &quot;subCode2&quot;, [&quot;subFolder1&quot;, [&quot;sc1&quot;, &quot;sc2&quot;]]]]];
		dataDescriptor = new TreeDDForCodeMaintain();
		labelFunction = labelFunForTree;
		dataTipFunction = dataTipFunctionForTreeCode;
		showDataTips = true;
	}

	protected function dataTipFunctionForTreeCode(item:Object):String {
		if(item is Array) {
			return String(item[0]);
		}
		// return item.toString();
		return AppContext.getInstance().metaDomain.getEntityByName(String(item)).descriptionLocalized;
	}</pre>
<p>效果:</p>
<p>&#160;</p>
<p><a href="http://liguoliang.com/wp-content/uploads/2009/10/image.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="225" alt="image" src="http://liguoliang.com/wp-content/uploads/2009/10/image_thumb.png" width="213" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2009/flex-tree-tooltip-%e8%ae%be%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex: Tree如何展开/关闭一个节点, 并选中其孩子?　如何关闭所有的节点？</title>
		<link>http://liguoliang.com/2009/flex-tree%e5%a6%82%e4%bd%95%e5%b1%95%e5%bc%80%e5%85%b3%e9%97%ad%e4%b8%80%e4%b8%aa%e8%8a%82%e7%82%b9-%e5%b9%b6%e9%80%89%e4%b8%ad%e5%85%b6%e5%ad%a9%e5%ad%90%e3%80%80%e5%a6%82%e4%bd%95%e5%85%b3/</link>
		<comments>http://liguoliang.com/2009/flex-tree%e5%a6%82%e4%bd%95%e5%b1%95%e5%bc%80%e5%85%b3%e9%97%ad%e4%b8%80%e4%b8%aa%e8%8a%82%e7%82%b9-%e5%b9%b6%e9%80%89%e4%b8%ad%e5%85%b6%e5%ad%a9%e5%ad%90%e3%80%80%e5%a6%82%e4%bd%95%e5%85%b3/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 02:54:09 +0000</pubDate>
		<dc:creator>老李</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2009/03/844/</guid>
		<description><![CDATA[_treeOUs.expandChildrenOf(currentOU, true); // 展开目录 

_treeOUs.selectedItem = ou; //选定孩子

_treeOUs.openItems = []; // 关闭所有节点;
<p><strong>expandChildrenOf</strong>(item:Ob</p>]]></description>
			<content:encoded><![CDATA[<pre class="java" name="code">_treeOUs.expandChildrenOf(currentOU, true); // 展开目录 

_treeOUs.selectedItem = ou; //选定孩子

_treeOUs.openItems = []; // 关闭所有节点;</pre>
<p><strong>expandChildrenOf</strong>(item:Object, open:Boolean):void<br />
Opens or closes all the tree items below the specified item.</p>
<p><strong>expandItem</strong>(item:Object, open:Boolean, animate:Boolean = false, dispatchEvent:Boolean = false, cause:Event = null):void<br />
Opens or closes a branch item.</p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2009/flex-tree%e5%a6%82%e4%bd%95%e5%b1%95%e5%bc%80%e5%85%b3%e9%97%ad%e4%b8%80%e4%b8%aa%e8%8a%82%e7%82%b9-%e5%b9%b6%e9%80%89%e4%b8%ad%e5%85%b6%e5%ad%a9%e5%ad%90%e3%80%80%e5%a6%82%e4%bd%95%e5%85%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Tree样式: 如何修改Tree的Icon</title>
		<link>http://liguoliang.com/2009/flex-tree%e6%a0%b7%e5%bc%8f-%e5%a6%82%e4%bd%95%e4%bf%ae%e6%94%b9tree%e7%9a%84icon/</link>
		<comments>http://liguoliang.com/2009/flex-tree%e6%a0%b7%e5%bc%8f-%e5%a6%82%e4%bd%95%e4%bf%ae%e6%94%b9tree%e7%9a%84icon/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 02:50:33 +0000</pubDate>
		<dc:creator>老李</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2009/03/829/</guid>
		<description><![CDATA[<p><a href="http://liguoliang.com/wp-content/uploads/2009/03/image2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="260" alt="image" src="http://liguoliang.com/wp-content/uploads/2009/03/image-thumb2.png" width="193" border="0" /></a></p>
<p> 可以通过设定Tree的样式来更改Tree的icon. 如下
		_treeLAAndSub = new Tree();
		_treeLAAndSub.iconField = &#34;hahah@#$@#$&#34;;
		_treeLAAndSub.setStyle(&#34;fold</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://liguoliang.com/wp-content/uploads/2009/03/image2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="260" alt="image" src="http://liguoliang.com/wp-content/uploads/2009/03/image-thumb2.png" width="193" border="0" /></a></p>
<p> 可以通过设定Tree的样式来更改Tree的icon. 如下
<pre class="java" name="code">		_treeLAAndSub = new Tree();
		_treeLAAndSub.iconField = &quot;hahah@#$@#$&quot;;
		_treeLAAndSub.setStyle(&quot;folderClosedIcon&quot;, ImagesForActions.iconImport);	//文件夹关闭时
		_treeLAAndSub.setStyle(&quot;folderOpenIcon&quot;, ImagesForActions.iconExport);	//文件夹打开

		_treeLAAndSub.setStyle(&quot;defaultLeafIcon&quot;, ImagesForActions.iconCopy);	// 叶子
		_treeLAAndSub.setStyle(&quot;disclosureOpenIcon&quot;, ImagesForActions.iconRemove);	//文件夹打开时旁边的图示
		_treeLAAndSub.setStyle(&quot;disclosureClosedIcon&quot;, ImagesForActions.iconAdd);	//文件夹关闭时旁边的图示</pre>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2009/flex-tree%e6%a0%b7%e5%bc%8f-%e5%a6%82%e4%bd%95%e4%bf%ae%e6%94%b9tree%e7%9a%84icon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR中通过右键直接选定基于LIST容器[DataGrid, List, Tree等]的数据 &#8211; Select List item with mouse right-click</title>
		<link>http://liguoliang.com/2009/air%e4%b8%ad%e9%80%9a%e8%bf%87%e5%8f%b3%e9%94%ae%e7%9b%b4%e6%8e%a5%e9%80%89%e5%ae%9a%e5%9f%ba%e4%ba%8elist%e5%ae%b9%e5%99%a8datagrid-list-tree%e7%ad%89%e7%9a%84%e6%95%b0%e6%8d%ae-select-list-ite/</link>
		<comments>http://liguoliang.com/2009/air%e4%b8%ad%e9%80%9a%e8%bf%87%e5%8f%b3%e9%94%ae%e7%9b%b4%e6%8e%a5%e9%80%89%e5%ae%9a%e5%9f%ba%e4%ba%8elist%e5%ae%b9%e5%99%a8datagrid-list-tree%e7%ad%89%e7%9a%84%e6%95%b0%e6%8d%ae-select-list-ite/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 15:18:16 +0000</pubDate>
		<dc:creator>老李</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Air右键]]></category>
		<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[Flex右键]]></category>
		<category><![CDATA[List]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2009/01/675/</guid>
		<description><![CDATA[在很多情况下, 我们在DataGrid, List, Tree等容器中使用右键, 进行如修改, 删除 某行的操作.  问题是如果该容器初始状态下直接进行右键点击时, 并不能选定任何数据. 通过监听右键菜单SELECT事件, 获取到当前右键所击位置的Index, 并将之赋值给DataGrid或其他容器的SelectIndex, 完成点击操作]]></description>
			<content:encoded><![CDATA[<p><strong>问题:</strong> 在很多情况下, 我们在DataGrid, List, Tree等容器中使用右键, 进行如修改, 删除 某行的操作.&#160; 问题是如果该容器初始状态下直接进行右键点击时, 并不能选定任何数据. </p>
<p><strong>解决: </strong>通过监听右键菜单SELECT事件, 获取到当前右键所击位置的Index, 并将之赋值给DataGrid或其他容器的SelectIndex, 完成点击操作</p>
<p><strong>详细实现:&#160; </strong>以DataGrid为例.</p>
<p>第一步, 首先给DataGrid添加菜单</p>
<pre class="java" name="code">			var dgMenu:NativeMenu = new NativeMenu();
			var del:NativeMenuItem  = new NativeMenuItem(&quot;Test&quot;);
			del.addEventListener(Event.SELECT, onRightClickDel);
			dgMenu.addItem(del);
			dgMenu.addEventListener(ContextMenuEvent.MENU_SELECT, onRightClicked);
			_dataGridStudent.contextMenu = dgMenu;</pre>
<p>第二步, 响应函数:</p>
<pre class="java" name="code">	/**响应右键点击 */
	private function onRightClicked(e:ContextMenuEvent):void {
		var rightClickItemRender:IListItemRenderer;

		if(e.mouseTarget is IListItemRenderer) {
			rightClickItemRender = IListItemRenderer(e.mouseTarget);
		}else if(e.mouseTarget.parent is IListItemRenderer) {
			rightClickItemRender = IListItemRenderer(e.mouseTarget.parent);
		}

		if(rightClickItemRender != null) {
			var rightClickIndex:int = _dataGridStudent.itemRendererToIndex(rightClickItemRender);
			if(_dataGridStudent.selectedIndex != rightClickIndex) {
				_dataGridStudent.selectedIndex = rightClickIndex;
				onSlectedChange();
			}
		}
		trace(&quot;通过右键单击获得选定的行: &quot; + _dataGridStudent.selectedIndex);
	}</pre>
<p>Delete响应函数:</p>
<pre class="java" name="code">	/** 当右键菜单的Delete点击后响应*/
	private function onRightClickDel(e:Event):void {
		//在这里放逻辑....
	}</pre>
<p><strong>效果:</strong></p>
<p><a href="http://liguoliang.com/wp-content/uploads/2009/01/image2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="313" alt="image" src="http://liguoliang.com/wp-content/uploads/2009/01/image-thumb2.png" width="390" border="0" /></a> </p>
<p>控制台Trace信息:</p>
<p><em>通过右键单击获得选定的行: 1</em></p>
</p>
<p>&#160;</p>
<p>参考资料: <a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&amp;postId=11606&amp;productId=2&amp;loc=en_US" target="_blank">Adobe CookBook&#160; Select List item with mouse right-click</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2009/air%e4%b8%ad%e9%80%9a%e8%bf%87%e5%8f%b3%e9%94%ae%e7%9b%b4%e6%8e%a5%e9%80%89%e5%ae%9a%e5%9f%ba%e4%ba%8elist%e5%ae%b9%e5%99%a8datagrid-list-tree%e7%ad%89%e7%9a%84%e6%95%b0%e6%8d%ae-select-list-ite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex树形菜单动态加载 Flex Tree Dynamic Loading</title>
		<link>http://liguoliang.com/2008/flex%e6%a0%91%e5%bd%a2%e8%8f%9c%e5%8d%95%e5%8a%a8%e6%80%81%e5%8a%a0%e8%bd%bd-flex-tree-dynamic-loading/</link>
		<comments>http://liguoliang.com/2008/flex%e6%a0%91%e5%bd%a2%e8%8f%9c%e5%8d%95%e5%8a%a8%e6%80%81%e5%8a%a0%e8%bd%bd-flex-tree-dynamic-loading/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 09:43:12 +0000</pubDate>
		<dc:creator>老李</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://liguoliang.com/2008/09/72/</guid>
		<description><![CDATA[<p><span style="text-decoration: underline;">[小站博客均为原创, 转载请保留以下信息:</span></p>
<p><span style="text-decoration: underline;">作者:<a href="http://liguoliang.com" target="_blank">http://liguoliang.com</a> 欢迎访问:Adobe上海用户组: <a href="http://riashanghai.com " target="_blank">http://riashanghai.com </a>]</span></p>
<h2>1. 设计目标:<a href="http://www.riashanghai.com/sites/default/files/png-1163_2_0.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" title="png-1163" src="http://www.riashanghai.com/sites/default/files/png-1163_thumb_0.png" border="0" alt="png-1163" width="128" height="128" align="right" /></a></h2>
<p>Flex中Tree动态加载,即在点击之后才加载下级目录的内容.</p>
<h2>2. 概要设计:</h2>
<p>Tree的属性:<br />
dataDescriptor=&#8221;{new CategoryTreeDataDiscriptor()}&#8221;<br />
dataProvider=&#8221;{Category.root}&#8221; id=&#8221;treeCategory&#8221;<br />
通过root对象与dataDescriptor提供给Tree数据.</p>
<p>初始化成功后即在Tree上监听函数:<br />
treeCategory.addEventListener(TreeEvent.ITEM_OPEN, treeOpenHandler);<br />
在TreeEvent.ITEM_OPEN发生之后,读取数据库或其他数据源的数据,以建立其下级目录.</p>
<p></p>]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: underline;">[小站博客均为原创, 转载请保留以下信息:</span></p>
<p><span style="text-decoration: underline;">作者:<a href="http://liguoliang.com" target="_blank">http://liguoliang.com</a> 欢迎访问:Adobe上海用户组: <a href="http://riashanghai.com " target="_blank">http://riashanghai.com </a>]</span></p>
<h2>1. 设计目标:<a href="http://www.riashanghai.com/sites/default/files/png-1163_2_0.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" title="png-1163" src="http://www.riashanghai.com/sites/default/files/png-1163_thumb_0.png" border="0" alt="png-1163" width="128" height="128" align="right" /></a></h2>
<p>Flex中Tree动态加载,即在点击之后才加载下级目录的内容.</p>
<h2>2. 概要设计:</h2>
<p>Tree的属性:<br />
dataDescriptor=&#8221;{new CategoryTreeDataDiscriptor()}&#8221;<br />
dataProvider=&#8221;{Category.root}&#8221; id=&#8221;treeCategory&#8221;<br />
通过root对象与dataDescriptor提供给Tree数据.</p>
<p>初始化成功后即在Tree上监听函数:<br />
treeCategory.addEventListener(TreeEvent.ITEM_OPEN, treeOpenHandler);<br />
在TreeEvent.ITEM_OPEN发生之后,读取数据库或其他数据源的数据,以建立其下级目录.</p>
<p><span id="more-72"></span></p>
<h2>3. 实现代码:</h2>
<p>在用户登录成功之后会立即读取数据并新建其对应的根目录,并将其赋值给静态变量Category.root.<br />
为了提示用户目录正在加载,同时也作为已经加载过的标记,为每个新建的Category中加入一个fake Category;<br />
实现方法:  category的代码,在每次新建category的时候都会增加fake,当建立fake时不会增加.</p>
<pre class="java">	public class Category
	{
		public static var fake:Category = new Category(true);
		fake.label = "Loading..";

		[Bindable]
		public static var root : Category;

		public var id:int;
		public var label : String;
		public var subCats : ArrayCollection;
		public var notes : ArrayCollection;
		public var parent : Category;

		public function Category(isFake:Boolean=false) {
			if(!isFake) {
				addSubCat(fake);
			}
		}....</pre>
<p>treeOpenHandler:</p>
<p>如果为第一次展开[即其子目录只有一个,并且为fake],则读取数据源数据,建立其下级目录对象,将下级目录对象加入到该目录的子目录ArrayCollection中.<br />
<code><br />
//Tree响应函数,展开后读取子目录<br />
private function treeOpenHandler(e:TreeEvent):void {<br />
openingItem = e.item as Category;<br />
LogUtils.defaultLog.info(openingItem.label + " is opened");<br />
if(openingItem == Category.fake) {<br />
Alert.show("正在加载,请稍候...");<br />
return;<br />
}<br />
if((openingItem as Category).subCats == null) {<br />
return;<br />
}<br />
if((openingItem as Category).subCats.length !=1 || (openingItem as Category).subCats[0] != Category.fake) {<br />
return;<br />
}<br />
var sql:String =<br />
"SELECT * FROM Cat WHERE user_ID=" +  currentUser.id + " AND " + "parent_ID=" + openingItem.id + ";";<br />
SQLUtils.createAndExecuteStatement(conn,sql,null,loadSubCatsOk,loadSubCatsError);<br />
}</code></p>
<p>//当load正常时,运行,增加子目录,首先会删除fake.<br />
private function loadSubCatsOk(e:SQLEvent):void {<br />
var CatsFromDB:SQLResult = e.target.getResult();<br />
if(CatsFromDB.data == null) {<br />
openingItem.subCats.removeAll();<br />
LogUtils.defaultLog.info(openingItem.label + &#8220;没有子目录&#8221;);<br />
return;<br />
}<br />
openingItem.subCats.removeAll();<br />
for(var i:int=0; i<br />
var subCat:Category = new Category();<br />
subCat.id = CatsFromDB.data[i].cat_ID;<br />
subCat.label = CatsFromDB.data[i].label;<br />
subCat.parent = openingItem;<br />
LogUtils.defaultLog.info(&#8220;子目录名称:&#8221; + CatsFromDB.data[i].label);<br />
openingItem.addSubCat(subCat);<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://liguoliang.com/2008/flex%e6%a0%91%e5%bd%a2%e8%8f%9c%e5%8d%95%e5%8a%a8%e6%80%81%e5%8a%a0%e8%bd%bd-flex-tree-dynamic-loading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
