Sorry I haven't gotten to that example yet, but you are very close.
1. Change your 'hardcoded sample data to use <XML>, not <XMLList>,
because this is how you will be getting the data. Make sure the tree
shows up properly. Set showRoot="true" (something like that) if needed.
2. Pull the data out like you have done
3. Call the handler. (you called it myTreeData(), I am changing the
name for some clarity):
result="onResult(event)" (the event argument is critical)
4. Declare the instance variable:
[Bindable]private var _xmlData:XML;
5. declare the handler:
import mx.rpc.events.ResultEvent;
private function onResult(oEvent:ResultEvent):void {
_xmlData = XML(oEvent.result);
trace(_xmlData.toSMLString()); //so you can see exactly what
your xml structur is
...
6. Bind the Tree:
<mx:Tree id="myTree" dataProvider="{ xmlData }" .../>
That should do it.
Tracy
________________________________
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of shawn.gibson
Sent: Monday, March 12, 2007 4:52 PM
To: [email protected]
Subject: [flexcoders] Re: HTTPService-driven Tree
Hi Tracy. Unfortunately my server is down, and my ISP has no idea
why. Frustrating.
I appreciate your help. Here is what I have, in gist:
<mx:Tree id="myTree" width="50%" height="50%" labelField="@label"
showRoot="false" dataProvider="{treeData}"
change="treeChanged(event)"/>
...and in the same file I have, of course:
<mx:XMLList id="treeData">
etc...
</mx:XMLList>
This works perfectly how I want, minus it's being compiled in the swf.
...the "gURL" attribute I am hoping to be able to fire off to another
HTTPService item, a repeater HorizontalBox thing also from the
examples, and that actually works (the file "catherine.xml" for
example, if I go into it, I can change anything without recompiling
the swf's, and it loads, the same way I need this tree too.
So based on your example, I tried the following:
Here is the new external file, called galleriesData.xml, it's exactly
what currently sits in the XMLList above excluding the first line:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<item isBranch="true" label="animals" gURL="animals.xml">
<item isBranch="true" label="fish" gURL="fish.xml">
<item isBranch="false" label="halibut" gURL="halibut.xml"/>
<item isBranch="false" label="east coast sockeye"
gURL="east_coast_sockeye.xml"/>
<item isBranch="false" label="west coast sockeye"
gURL="west_coast_sockeye"/>
</item>
<item isBranch="true" label="people" gURL="people.xml">
<item isBranch="false" label="Catherine"
gURL="Catherine.xml"/>
</item>
</item>
<item isBranch="false" label="vegetables"
gURL="vegetables.xml"></item>
<item isBranch="true" label="Worst Case Scenario - KINGDOM"
gURL="etc">
<item isBranch="true" label="Worst Case Scenario - ANIMALs"
gURL="etc">
<item isBranch="true" label="Worst Case Scenario - MAMMALS"
gURL="etc">
<item isBranch="true" label="Worst Case Scenario -
PRIMATES" gURL="etc">
<item isBranch="false" label="Worst Case Scenario -
MAN" gURL="etc"/>
</item>
</item>
</item>
</item>
</root>
So the HTTPService would be, if I read you right:
<mx:HTTPService id="loadGal" url="model/galleriesData.xml"
resultFormat="e4x" result="myTreeData();" useProxy="false" />
...and the Tree would now read...I have no idea.
What you wrote about "a resultHandler function to assign the result
to an instance level variable. Bind the tree to the variable" is
where I get lost. So I don't use "loadGal" as the data provider, but
a variable? As you can see, I have no idea what
the "result='myTreeData();'" function I called in the HTTPService
result would look like, how to write it.
I can't wait for the Flex books to come out, I find all the
documentation overwhelming...going from Flash/AS1 to this is very
very fun, but also making me lose weight LOL.
Shawn
--- In [email protected] <mailto:flexcoders%40yahoogroups.com>
, "Tracy Spratt" <[EMAIL PROTECTED]> wrote:
>
> Yes, this is pretty straightforward. Where are you stuck?
>
>
>
> Get your tree displaying with XML that is "hard-coded" first
(obviously
> use the exact same format as your real data will use).
>
>
>
> Then cut that data out into an xml file and save it on a server
> somewhere.
>
>
>
> Then use HTTPService, resultFormat="e4x" to get the data, and a
> resultHandler function to assign the result to an instance level
> variable. Bind the tree to the variable.
>
>
>
> Beware of caching issues. This seems to b a big problem when
loading
> data from a file. If you see the problem , search the archives for
it.
>
>
>
> I'll try to post a simple example.
>
>
>
> Tracy
>
>
>
> ________________________________
>
> From: [email protected] <mailto:flexcoders%40yahoogroups.com>
[mailto:[email protected] <mailto:flexcoders%40yahoogroups.com>
] On
> Behalf Of shawn.gibson
> Sent: Sunday, March 11, 2007 5:38 PM
> To: [email protected] <mailto:flexcoders%40yahoogroups.com>
> Subject: [flexcoders] HTTPService-driven Tree
>
>
>
> Hi Guys, I finally figured I'd ask here, I have practically given up
> LOL. Is there any way to populate the Flex 2 Tree control with
> HTTPService, reading an XML file, live, so any changes you make to
the
> XML file can take place in the Flash Player without having to
> recompile the component, module, or app?
>
> For perfect example, how would I take even just the Adobe example,
and
> turn it into an XML file that the Tree can load as a data source?
>
> <mx:XMLList id="treeData">
> <node label="Mail Box">
> <node label="Inbox">
> <node label="Marketing"/>
> <node label="Product Management"/>
> <node label="Personal"/>
> </node>
> <node label="Outbox">
> <node label="Professional"/>
> <node label="Personal"/>
> </node>
> <node label="Spam"/>
> <node label="Sent"/>
> </node>
> </mx:XMLList>
>
> I know there's a lot of jumping around with XMLListCollection,
XMLList
> and other various things, I have plugged away till the cows come
home,
> but nothing works...and I've not come across a single example of a
> tree populated by HTTPService using XML...only a very complex
example
> with a db, from Bruce Phillips
> (http://www.brucephillips.name/blog/index.cfm/2007/1/1/How-To-Use-
<http://www.brucephillips.name/blog/index.cfm/2007/1/1/How-To-Use->
An-Arr
> ayCollection-As-The-Data-Provider--For-The-Flex-2-Tree-Control
> <http://www.brucephillips.name/blog/index.cfm/2007/1/1/How-To-Use-
<http://www.brucephillips.name/blog/index.cfm/2007/1/1/How-To-Use->
An-Arr
> ayCollection-As-The-Data-Provider--For-The-Flex-2-Tree-Control> )
>
> I am trying to generate what would be exactly the same kind of
output
> as Adobe's example above...multiple nodes, with any number within,
so
> I can use it as navigation for my photo gallery site.
>
> Any suggestions?
>
> Thanks kindly for any help:)
>
> shawn
>