<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35809780</id><updated>2011-04-21T12:35:21.056-07:00</updated><title type='text'>codercentral</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codercentral.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35809780/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codercentral.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>lkondur</name><uri>http://www.blogger.com/profile/16994340313635630798</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35809780.post-116050414745255098</id><published>2006-10-10T11:07:00.000-07:00</published><updated>2007-03-02T23:41:33.000-08:00</updated><title type='text'>Using TreeGrid in Flex 2.0</title><content type='html'>For all those of you who need the TreeGrid in Flex2.0, please find the relevant files as below.&lt;br /&gt;&lt;br /&gt;I have basically converted James Ward's TreeGrid in Flex 1.5 to 2.0. More info about the treegrid can be found at the following URL.&lt;br /&gt;&lt;a title="http://www.cayambe.com/wordpress/?p=" href="http://www.cayambe.com/wordpress/?p=36"&gt;www.cayambe.com/wordpress/?p=36&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Please do post your thoughts on any improvisations to the code. I'm pretty new to flex myself!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Here are the three files&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;"TreeVO.as"&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;package{&lt;br /&gt;import mx.collections.ArrayCollection;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class TreeVO{&lt;br /&gt;&lt;br /&gt;public var level:String;&lt;br /&gt;public var desc:String;&lt;br /&gt;public var childList:ArrayCollection;&lt;br /&gt;&lt;br /&gt;//fields used by treeGrid renderer&lt;br /&gt;public var isOpen:Boolean;&lt;br /&gt;public var indent:Number;&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* constructor&lt;br /&gt;/*************************************************************************/&lt;br /&gt;function TreeVO() {&lt;br /&gt;childList = new ArrayCollection();&lt;br /&gt;isOpen = false;&lt;br /&gt;indent = 0;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;"MyTreeGrid.mxml"&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"&lt;br /&gt;width="100%" height="100%" initialize="initApp()"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:DataGrid id="treeGrid" dataProvider="{dp}" sortableColumns="false" height="100%"&lt;br /&gt;itemClick="itemClickEvent(event);" allowMultipleSelection="true"&amp;gt;&lt;br /&gt;&amp;lt;mx:columns&amp;gt;&lt;br /&gt;&amp;lt;mx:Array&amp;gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn dataField="desc" headerText="Description" width="140"&lt;br /&gt;itemRenderer="MyTreeGridRenderer"/&amp;gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn dataField="level" headerText="Level" width="200"/&amp;gt;&lt;br /&gt;&amp;lt;/mx:Array&amp;gt;&lt;br /&gt;&amp;lt;/mx:columns&amp;gt;&lt;br /&gt;&amp;lt;/mx:DataGrid&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;import mx.collections.ArrayCollection;&lt;br /&gt;import mx.events.ListEvent;&lt;br /&gt;&lt;br /&gt;[Bindable]&lt;br /&gt;public var dp : ArrayCollection;&lt;br /&gt;&lt;br /&gt;public var myRow:int;&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* initApp&lt;br /&gt;/*************************************************************************/&lt;br /&gt;public function initApp():void{&lt;br /&gt;&lt;br /&gt;dp = new ArrayCollection();&lt;br /&gt;&lt;br /&gt;//-------&lt;br /&gt;var a1:TreeVO = new TreeVO();&lt;br /&gt;a1.level ="Level 1";&lt;br /&gt;a1.desc = "I am a1"&lt;br /&gt;//-------&lt;br /&gt;var a2:TreeVO = new TreeVO();&lt;br /&gt;a2.level = "Level 1";&lt;br /&gt;a2.desc = "I am a2"&lt;br /&gt;//-------&lt;br /&gt;var a1_1:TreeVO = new TreeVO();&lt;br /&gt;a1_1.level = "Level 2";&lt;br /&gt;a1_1.desc = "I am a1_1";&lt;br /&gt;&lt;br /&gt;var a1_2:TreeVO = new TreeVO();&lt;br /&gt;a1_2.level = "Level 2";&lt;br /&gt;a1_2.desc = "I am a1_2";&lt;br /&gt;&lt;br /&gt;var a1_3:TreeVO = new TreeVO();&lt;br /&gt;a1_3.level = "Level 2";&lt;br /&gt;a1_3.desc = "I am a1_3";&lt;br /&gt;//-------&lt;br /&gt;&lt;br /&gt;var a1_2_1:TreeVO = new TreeVO();&lt;br /&gt;a1_2_1.level = "Level 3";&lt;br /&gt;a1_2_1.desc = "I am a1_2_1";&lt;br /&gt;&lt;br /&gt;var a1_2_2:TreeVO = new TreeVO();&lt;br /&gt;a1_2_2.level = "Level 3";&lt;br /&gt;a1_2_2.desc = "I am a1_2_2";&lt;br /&gt;//-------&lt;br /&gt;&lt;br /&gt;var a1_3_1:TreeVO = new TreeVO();&lt;br /&gt;a1_3_1.level = "Level 3";&lt;br /&gt;a1_3_1.desc = "I am a1_3_1";&lt;br /&gt;//-------&lt;br /&gt;&lt;br /&gt;a1_2.childList.addItem(a1_2_1);&lt;br /&gt;a1_2.childList.addItem(a1_2_2);&lt;br /&gt;a1_3.childList.addItem(a1_3_1);&lt;br /&gt;&lt;br /&gt;a1.childList.addItem(a1_1);&lt;br /&gt;a1.childList.addItem(a1_2);&lt;br /&gt;a1.childList.addItem(a1_3);&lt;br /&gt;&lt;br /&gt;dp.addItem(a1);&lt;br /&gt;dp.addItem(a2);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private function itemClickEvent(event:ListEvent):void {&lt;br /&gt;myRow = event.rowIndex;&lt;br /&gt;//Dumper.dump("myRow: "+myRow);&lt;br /&gt;}&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;"MyTreeGridRenderer.mxml"&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" color="0x000000"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Image id="imageIcon" click="iconPress(event)"/&amp;gt;&lt;br /&gt;&amp;lt;mx:Label id="labelValue"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;import mx.collections.ArrayCollection;&lt;br /&gt;import mx.core.*;&lt;br /&gt;&lt;br /&gt;public var indent:Number = 10;&lt;br /&gt;&lt;br /&gt;[Embed(source='Assets.swf', symbol='TreeDisclosureClosed')]&lt;br /&gt;[Bindable]&lt;br /&gt;public var closeIcon:Class;&lt;br /&gt;&lt;br /&gt;[Embed(source='Assets.swf', symbol='TreeDisclosureOpen')]&lt;br /&gt;[Bindable]&lt;br /&gt;public var openIcon:Class;&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* setValue&lt;br /&gt;/*************************************************************************/&lt;br /&gt;override public function set data(data:Object):void{&lt;br /&gt;&lt;br /&gt;if(data != null){&lt;br /&gt;&lt;br /&gt;super.data = data;&lt;br /&gt;&lt;br /&gt;labelValue.text = data.desc;&lt;br /&gt;labelValue.x = 30 + data.indent;&lt;br /&gt;&lt;br /&gt;if(data.childList.length &amp;gt; 0){&lt;br /&gt;&lt;br /&gt;if(data.isOpen == false){&lt;br /&gt;imageIcon.visible = true;&lt;br /&gt;imageIcon.source = closeIcon;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;imageIcon.visible = true;&lt;br /&gt;imageIcon.source = openIcon;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;//There shouldnt be any icon&lt;br /&gt;imageIcon.visible = false;&lt;br /&gt;}&lt;br /&gt;imageIcon.x = 20 + data.indent;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* iconPress&lt;br /&gt;/*************************************************************************/&lt;br /&gt;private function iconPress(event:MouseEvent):void{&lt;br /&gt;callLater(disclosurePress);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* disclosurePress&lt;br /&gt;/*************************************************************************/&lt;br /&gt;private function disclosurePress():void{&lt;br /&gt;&lt;br /&gt;var indexNum:Number = parentApplication.myRow-1;&lt;br /&gt;var item:TreeVO = parentApplication.dp[indexNum];&lt;br /&gt;&lt;br /&gt;if(parentApplication.dp[indexNum].isOpen == false){&lt;br /&gt;openItem(item, indexNum);&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;closeItem(item);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;item.isOpen = !item.isOpen;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* openItem&lt;br /&gt;/*************************************************************************/&lt;br /&gt;private function openItem(item:TreeVO, indexNum:Number):void{&lt;br /&gt;&lt;br /&gt;//Dumper.dump("*** openItem for data: "+item.desc);&lt;br /&gt;var root:ArrayCollection = parentApplication.dp;&lt;br /&gt;&lt;br /&gt;//add the rows for the children at this level&lt;br /&gt;for(var i:Number = 0; i &amp;lt; item.childList.length; i++){&lt;br /&gt;if(item.indent){&lt;br /&gt;item.childList[i].indent = item.indent + indent;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;item.childList[i].indent = indent;&lt;br /&gt;}&lt;br /&gt;//Dumper.dump("Adding data: "+item.childList[i].desc+" at index= "+(indexNum+1+i));&lt;br /&gt;root.addItemAt(item.childList[i], indexNum+1+i);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//recursively open already opened nodes at this level&lt;br /&gt;for(var j:Number = 0; j &amp;lt; item.childList.length; j++){&lt;br /&gt;if (item.childList[j].isOpen){&lt;br /&gt;openItem(item.childList[j], indexNum+j+1);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/************************************************************************&lt;br /&gt;/* closeItem&lt;br /&gt;/*************************************************************************/&lt;br /&gt;private function closeItem(item:Object):void{&lt;br /&gt;&lt;br /&gt;var root:ArrayCollection = parentApplication.dp;&lt;br /&gt;var deleteIndex:Number = parentApplication.myRow-1;&lt;br /&gt;&lt;br /&gt;for(var i:Number = 0; i &amp;lt; item.childList.length; i++){&lt;br /&gt;if(item.childList[i].isOpen == true){&lt;br /&gt;closeItem(item.childList[i]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Dumper.dump("Deleting value: "+root[deleteIndex+1].desc+" at index: "+(deleteIndex+1)+" from array");&lt;br /&gt;root.removeItemAt(deleteIndex+1);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35809780-116050414745255098?l=codercentral.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codercentral.blogspot.com/feeds/116050414745255098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35809780&amp;postID=116050414745255098' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35809780/posts/default/116050414745255098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35809780/posts/default/116050414745255098'/><link rel='alternate' type='text/html' href='http://codercentral.blogspot.com/2006/10/using-treegrid-in-flex-20.html' title='Using TreeGrid in Flex 2.0'/><author><name>lkondur</name><uri>http://www.blogger.com/profile/16994340313635630798</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>
