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/
 



Reply via email to