Greetings -
Expanding on the "Connecting to Web Services" tutorial, I added a
combo box for switching between methods of the API to the Adobe blog
aggregator, ie from getMostPopularPosts to search.
As both methods return the same columns, the data grid displaying the
result can stay the same, other than needing a different value for
data provider, ie:
myWebService.getMostPopularPosts.lastResult
vs
myWebService.search.lastResult
I was hoping therefore to bind the dataGrid dataProvider value to a
variable which I'd set when users change the value of the comboBox
(which selects which method to use). However I think I'm typing the
variable which stores the value of the service result wrong, as I get
null whenever I try and set the value (blogResult), show below:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
public var blogResult:Object = null;
public function postTyper(event:Event):void{
if (event.currentTarget.selectedItem.data == "popular"){
postTypeVS.selectedIndex=1;
blogResult =
blogAggrWS.getMostPopularPosts.lastResult;
trace (blogResult);
}
else{
postTypeVS.selectedIndex=0;
blogResult = blogAggrWS.search.lastResult;
trace (blogResult);
}
}
]]>
</mx:Script>
<mx:WebService id="blogAggrWS"
wsdl="http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?
wsdl"
useProxy="false">
<mx:operation name="getMostPopularPosts">
<mx:request>
<daysBack>{daysBackCB.value}</daysBack>
<limit>{numPostsCB.value}</limit>
</mx:request>
</mx:operation>
<mx:operation name="search">
<mx:request>
<offset>0</offset>
<limit>50</limit>
<searchTerms>{postKeywords.text}</searchTerms>
<sortBy>relevance</sortBy>
<languageIds>1</languageIds>
</mx:request>
</mx:operation>
<mx:operation name="getLanguages">
<mx:request/>
</mx:operation>
</mx:WebService>
<mx:Panel
width="850" height="400"
layout="absolute"
horizontalCenter="0" verticalCenter="0"
title="Adobe Blogs Post Finder">
<mx:HBox horizontalCenter="0" top="20" verticalAlign="middle">
<mx:Label text="Get:"/>
<mx:ComboBox id="whatPostsCB"
change="postTyper(event)">
<mx:Object label="Posts By Keyword"
data="search" />
<mx:Object label="Most Popular Posts"
data="popular" />
</mx:ComboBox>
<mx:ViewStack id="postTypeVS" width="400">
<mx:HBox verticalAlign="middle">
<mx:TextInput id="postKeywords"
text=""/>
<mx:Button label="Search"
click="blogAggrWS.search.send()"/>
</mx:HBox>
<mx:HBox verticalAlign="middle" width="372"
creationComplete="blogAggrWS.getMostPopularPosts.send()">
<mx:Spacer width="10"/>
<mx:Label text="Show:"/>
<mx:ComboBox id="numPostsCB"
change="blogAggrWS.getMostPopularPosts.send()">
<mx:Object label="Top 5 Posts"
data="5" />
<mx:Object label="Top 10 Posts"
data="10" />
<mx:Object label="Top 15 Posts"
data="15" />
</mx:ComboBox>
<mx:Spacer width="10"/>
<mx:Label text="In Last:"/>
<mx:ComboBox id="daysBackCB"
change="blogAggrWS.getMostPopularPosts.send()">
<mx:Object label="30 Days"
data="30" />
<mx:Object label="60 Days"
data="60" />
<mx:Object label="90 Days"
data="90" />
</mx:ComboBox>
</mx:HBox>
</mx:ViewStack>
</mx:HBox>
<mx:DataGrid left="20" right="20" top="62" bottom="20"
id="keyPostsDG"
dataProvider="{blogResult}">
<mx:columns>
<mx:DataGridColumn headerText="Post Title"
textAlign="left">
<mx:itemRenderer>
<mx:Component>
<mx:LinkButton
label="{data.postTitle}"
click="navigateToURL(new URLRequest(data.postLink))"
color="blue"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="Clicks"
dataField="clicks"
width="50" textAlign="right"/>
<mx:DataGridColumn headerText="Post Excerpt"
dataField="postExcerpt" wordWrap="true"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Application>
--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/flexcoders/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/