Re: [flexcoders] Variable Type for Web Service Result
Thanks, that worked perfectly and I learned a lot =) cheers, ethan Ethan, Yup, that was it. This works (although it's certainly not the only way to do it)... ?xml version=1.0 encoding=utf-8? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; layout=absolute creationPolicy=all mx:Script ![CDATA[ [Bindable] public var blogResult : Object; public function changeVS() : void{ postKeywords.text = ; postTypeVS.selectedIndex = (whatPostsCB.selectedItem.data == popular) ? 1 : 0 ; refresh(); } public function refresh() : void { if (whatPostsCB.selectedItem.data == popular) blogAggrWS.getMostPopularPosts.send(); else blogAggrWS.search.send(); } ]] /mx:Script mx:WebService id=blogAggrWS wsdl=http://weblogs.macromedia.com/mxna/webservices/mxna2.cfc?wsdl; useProxy=false showBusyCursor=true mx:operation name=getMostPopularPosts result=blogResult=event.result; mx:request daysBack{daysBackCB.value}/daysBack limit{numPostsCB.value}/limit /mx:request /mx:operation mx:operation name=search result=blogResult=event.result; mx:request offset0/offset limit50/limit searchTerms{postKeywords.text}/searchTerms sortByrelevance/sortBy languageIds1/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=changeVS() 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=refresh()/ /mx:HBox mx:HBox verticalAlign=middle width=372 mx:Spacer width=10/ mx:Label text=Show:/ mx:ComboBox id=numPostsCB change=refresh() selectedIndex=0 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=refresh() selectedIndex=0 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 Darren From: Darren Houle [EMAIL PROTECTED] Reply-To: flexcoders@yahoogroups.com To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Variable Type for Web Service Result Date: Wed, 23 Aug 2006 22:44:48 -0400 Ethan, I don't think it's your typing, I think it's your timing. Looks like you're flipping your postTyper() when the combobox is changed, but that's not firing a new send() like the original blogger example did. Try changing your code so that changing the combobox triggers the send() and the send result= handler triggers the postTyper(). That way you'll have the correct data in lastResult when you change your blogResult variable. That change should then be noticed by the bindings. Darren From: Ethan Miller [EMAIL PROTECTED] Reply-To: flexcoders@yahoogroups.com To: flexcoders@yahoogroups.com Subject: [flexcoders] Variable Type for Web Service Result Date: Wed, 23 Aug 2006 16:13:19 -0700 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
[flexcoders] Variable Type for Web Service Result
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 offset0/offset limit50/limit searchTerms{postKeywords.text}/searchTerms sortByrelevance/sortBy languageIds1/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/
RE: [flexcoders] Variable Type for Web Service Result
Ethan, I don't think it's your typing, I think it's your timing. Looks like you're flipping your postTyper() when the combobox is changed, but that's not firing a new send() like the original blogger example did. Try changing your code so that changing the combobox triggers the send() and the send result= handler triggers the postTyper(). That way you'll have the correct data in lastResult when you change your blogResult variable. That change should then be noticed by the bindings. Darren From: Ethan Miller [EMAIL PROTECTED] Reply-To: flexcoders@yahoogroups.com To: flexcoders@yahoogroups.com Subject: [flexcoders] Variable Type for Web Service Result Date: Wed, 23 Aug 2006 16:13:19 -0700 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 offset0/offset limit50/limit searchTerms{postKeywords.text}/searchTerms sortByrelevance/sortBy languageIds1/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
RE: [flexcoders] Variable Type for Web Service Result
/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 Darren From: Darren Houle [EMAIL PROTECTED] Reply-To: flexcoders@yahoogroups.com To: flexcoders@yahoogroups.com Subject: RE: [flexcoders] Variable Type for Web Service Result Date: Wed, 23 Aug 2006 22:44:48 -0400 Ethan, I don't think it's your typing, I think it's your timing. Looks like you're flipping your postTyper() when the combobox is changed, but that's not firing a new send() like the original blogger example did. Try changing your code so that changing the combobox triggers the send() and the send result= handler triggers the postTyper(). That way you'll have the correct data in lastResult when you change your blogResult variable. That change should then be noticed by the bindings. Darren From: Ethan Miller [EMAIL PROTECTED] Reply-To: flexcoders@yahoogroups.com To: flexcoders@yahoogroups.com Subject: [flexcoders] Variable Type for Web Service Result Date: Wed, 23 Aug 2006 16:13:19 -0700 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 offset0/offset limit50/limit searchTerms{postKeywords.text}/searchTerms sortByrelevance/sortBy languageIds1/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