Hi Jim, I think that'll be enough to get me going, thanks! :).
And if not, you'll hear from me soon enough :). Greets, Dauntless On Wed, Dec 30, 2009 at 3:36 PM, Jim Hayes <[email protected]> wrote: > > > I've used something like this (which is possibly a bit flaky, I admit. I > wrote this a long time ago and haven't revisited it since). > > private function displayTreeNode(node:XML):void > { > expandTreeParents(node); > movieTree.selectedItem = node; > movieTree.expandItem(node,true,false); > var idx:int = movieTree.getItemIndex(node); > movieTree.scrollToIndex(idx); > movieTree.firstVisibleItem = node; > } > > private function expandTreeParents(node:XML):void { > if (node && !movieTree.isItemOpen(node)) { > movieTree.expandItem(node, true); > expandTreeParents(node.parent()); > } > } > > where movieTree is my tree instance. > You need to traverse up the tree from the node you want to display and open > each item ( expandTreeParents() above ), > then select the node you want to display. This may not be visible even > then, hence the scroll to index stuff. > > Hope that's enough to get you going, in any case. > > > -----Original Message----- > From: [email protected] <flexcoders%40yahoogroups.com> on behalf > of thedauntless_ff > Sent: Wed 12/30/2009 1:31 PM > To: [email protected] <flexcoders%40yahoogroups.com> > Subject: [flexcoders] Selecting xml nodes in a tree > > Hi, > > My situation: > - 1 Tree component (id=tree) > - 1 XMLListCollection as a dataprovider for the tree (id=treeData) > - 1 String, a url, that has to be found & selected. > > My XMLListCollection looks like this: > <page title="page1" href="url1"> > <page title="subpage1" href="url2"/> > <page title="subpage2" href="url3"> > <page title="subsubpage1" href="url4"> > </page> > </page> > <page title="page2" href="url5"> > <page .../> > <page .../> > </page> > > Etc. All nodes are named 'page' and have a href property. > > What I need now, is a way to select the node in the tree for the given url. > For example, all nodes are collapsed and I want to select the node with > href=url4. How can I do this? > > This is what I tried: > > var t:XMLListCollection = this.treeData; > var url:String = "myURL"; > for(var i:Number = 0; i<t.length; i++) > { > //this works, nodes now contains a list of xml items with the correct url. > var nodes:XMLList = t[i]..page.(@href==url); > if(nodes.length() > 0) > { > //I only want to select the first occurence > tree.selectedItem = nodes[0]; > break; > } > } > > This, however, gives me a weird error (probably not that helpfull): > > TypeError: Error #1010: A term is undefined and has no properties. > at > mx.controls.listClasses::ListBase/setSelectionDataLoop()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7360] > at > mx.controls.listClasses::ListBase/commitSelectedItems()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7251] > at > mx.controls.listClasses::ListBase/commitSelectedItem()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7216] > at mx.controls.listClasses::ListBase/set > selectedItem()[E:\dev\beta1\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3474] > at classes::Logic/onBrowserLocationChange()[C:\Users\ser\Documents\Flex > Builder 3\application\src\classes\Logic.as:346] > at flash.events::EventDispatcher/dispatchEventFunction() > at flash.events::EventDispatcher/dispatchEvent() > at > mx.core::UIComponent/dispatchEvent()[E:\dev\beta1\frameworks\projects\framework\src\mx\core\UIComponent.as:11260] > at Classes::Logic/onBrowserLocationChange()[C:\Users\user\Documents\Flex > Builder 3\application\src\classes\Logic.as:73] > at flash.events::EventDispatcher/dispatchEventFunction() > at flash.events::EventDispatcher/dispatchEvent() > at > mx.core::UIComponent/dispatchEvent()[E:\dev\beta1\frameworks\projects\framework\src\mx\core\UIComponent.as:11260] > at > mx.controls::HTML/htmlLoader_locationChangeHandler()[E:\dev\beta1\frameworks\projects\airframework\src\mx\controls\HTML.as:1438] > at flash.events::EventDispatcher/dispatchEventFunction() > at flash.events::EventDispatcher/dispatchEvent() > at flash.html::HTMLLoader/onLocationChangeTimer() > at flash.utils::Timer/_timerDispatch() > at flash.utils::Timer/tick() > > Greets, > Dauntless > > __________________________________________________________ > This communication is from Primal Pictures Ltd., a company registered in > England and Wales with registration No. 02622298 and registered office: 4th > Floor, Tennyson House, 159-165 Great Portland Street, London, W1W 5PA, UK. > VAT registration No. 648874577. > > This e-mail is confidential and may be privileged. It may be read, copied > and used only by the intended recipient. If you have received it in error, > please contact the sender immediately by return e-mail or by telephoning > +44(0)20 7637 1010. Please then delete the e-mail and do not disclose its > contents to any person. > This email has been scanned for Primal Pictures by the MessageLabs Email > Security System. > __________________________________________________________ > >

