[flexcoders] Re: Filter Function on ArrayCollection with httpservices as there source
You could e4x as resultFormat and then bind this to an XMLListCollection, which in turn you can filter with a function. In e4x you would omit the root tag (probably =stockreport in your case) and use stockFeed.lastResult.products.product as a source for databinding --- In flexcoders@yahoogroups.com, bnprrsh [EMAIL PROTECTED] wrote: Hi, I am trying to use the filter function on anrray collection with a http service lastResult source. I can't get passed this error TypeError: Error #1034: Type Coercion failed: cannot convert mx.collections::[EMAIL PROTECTED] to Array. It seems to work fine when using my had coded object but I cant get it working with a httpservice no matter what resultFormat I choose. My Code: == ?xml version=1.0 encoding=utf-8? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; layout=vertical creationComplete=stockFeed.send() mx:Script ![CDATA[ import mx.utils.ArrayUtil; // On startup public function initApp():void { // Set filter function // Be careful to set filterFunction // only after ArrayCollection has been // populated. myData.filterFunction=processFilter; } // Filter function public function processFilter(item:Object):Boolean { var result:Boolean=false; // If no filter text, or a match, then true if (!item.code.length || item.code.toUpperCase().indexOf(txtFilter.text.toUpperCase()) = 0) result=true; return result; } ]] /mx:Script mx:HTTPService id=stockFeed url=http://www.1on1wholesale.co.uk/members_area/status-xml.asp showBusyCursor=true resultFormat=object result=initApp()/ !-- Array Collection Using HTTPSERVICE Source -- mx:ArrayCollection id=myData source={stockFeed.lastResult.stockreport.products.product}/ !-- Array Collection using Hard coded information -- !-- mx:ArrayCollection id=myData mx:source mx:Object code=N0505 name=Monica Rose status=In Stock / mx:Object code=N0506 name=Randy Candice status=In Stock / mx:Object code=N0507 name=Jump Start Foot Pump status=In Stock / mx:Object code=N0508 name=Carla Doll status=Out of Stock / /mx:source /mx:ArrayCollection -- !-- UI -- mx:HBox width=100% mx:Label text=Filter:/ mx:TextInput id=txtFilter width=100% change=myData.refresh()/ /mx:HBox !-- Tile List showing results from filtered array collection -- mx:TileList dataProvider={myData} width=100% height=300 columnCount=2 rowCount=2 mx:itemRenderer mx:Component mx:VBox paddingLeft=30 width=150 height=150 horizontalScrollPolicy=off verticalScrollPolicy=off mx:Label text={data.code} / mx:Label text={data.name}/ mx:Label text={data.status}/ /mx:VBox /mx:Component /mx:itemRenderer /mx:TileList !-- Data Grid showing results from filtered array collection -- mx:DataGrid dataProvider={myData} width=100% height=100% mx:columns mx:DataGridColumn headerText=code dataField=code/ mx:DataGridColumn headerText=name dataField=name/ mx:DataGridColumn headerText=status dataField=status/ /mx:columns /mx:DataGrid !-- Datagrid showing results without filtering -- mx:DataGrid dataProvider={stockFeed.lastResult.stockreport.products.product} id=testing/ /mx:Application
[flexcoders] Re: Filter Function on ArrayCollection with httpservices as there source
Thanks so much it worked a treat! --- In flexcoders@yahoogroups.com, iko_knyphausen [EMAIL PROTECTED] wrote: You could e4x as resultFormat and then bind this to an XMLListCollection, which in turn you can filter with a function. In e4x you would omit the root tag (probably =stockreport in your case) and use stockFeed.lastResult.products.product as a source for databinding --- In flexcoders@yahoogroups.com, bnprrsh ben@ wrote: Hi, I am trying to use the filter function on anrray collection with a http service lastResult source. I can't get passed this error TypeError: Error #1034: Type Coercion failed: cannot convert mx.collections::[EMAIL PROTECTED] to Array. It seems to work fine when using my had coded object but I cant get it working with a httpservice no matter what resultFormat I choose. My Code: == ?xml version=1.0 encoding=utf-8? mx:Application xmlns:mx=http://www.adobe.com/2006/mxml; layout=vertical creationComplete=stockFeed.send() mx:Script ![CDATA[ import mx.utils.ArrayUtil; // On startup public function initApp():void { // Set filter function // Be careful to set filterFunction // only after ArrayCollection has been // populated. myData.filterFunction=processFilter; } // Filter function public function processFilter(item:Object):Boolean { var result:Boolean=false; // If no filter text, or a match, then true if (!item.code.length || item.code.toUpperCase().indexOf(txtFilter.text.toUpperCase()) = 0) result=true; return result; } ]] /mx:Script mx:HTTPService id=stockFeed url=http://www.1on1wholesale.co.uk/members_area/status-xml.asp showBusyCursor=true resultFormat=object result=initApp()/ !-- Array Collection Using HTTPSERVICE Source -- mx:ArrayCollection id=myData source={stockFeed.lastResult.stockreport.products.product}/ !-- Array Collection using Hard coded information -- !-- mx:ArrayCollection id=myData mx:source mx:Object code=N0505 name=Monica Rose status=In Stock / mx:Object code=N0506 name=Randy Candice status=In Stock / mx:Object code=N0507 name=Jump Start Foot Pump status=In Stock / mx:Object code=N0508 name=Carla Doll status=Out of Stock / /mx:source /mx:ArrayCollection -- !-- UI -- mx:HBox width=100% mx:Label text=Filter:/ mx:TextInput id=txtFilter width=100% change=myData.refresh()/ /mx:HBox !-- Tile List showing results from filtered array collection -- mx:TileList dataProvider={myData} width=100% height=300 columnCount=2 rowCount=2 mx:itemRenderer mx:Component mx:VBox paddingLeft=30 width=150 height=150 horizontalScrollPolicy=off verticalScrollPolicy=off mx:Label text={data.code} / mx:Label text={data.name}/ mx:Label text={data.status}/ /mx:VBox /mx:Component /mx:itemRenderer /mx:TileList !-- Data Grid showing results from filtered array collection -- mx:DataGrid dataProvider={myData} width=100% height=100% mx:columns mx:DataGridColumn headerText=code dataField=code/ mx:DataGridColumn headerText=name dataField=name/ mx:DataGridColumn headerText=status dataField=status/ /mx:columns /mx:DataGrid !-- Datagrid showing results without filtering -- mx:DataGrid dataProvider={stockFeed.lastResult.stockreport.products.product} id=testing/ /mx:Application