In your result handler, call the refresh method after you set the filterFunction.
--Mike --- In [email protected], "pioplacz" <[EMAIL PROTECTED]> wrote: > > Yes, i want to put my filter function in the main mxml file where all my HTTPServices are > locates. I have already apply my filterfunction in the result handler in the HTTPService the > problem is that i cannot get it to connect with the textinput located in a MXML ViewStack > component. > > I pass my code here for both Main.MXML and MovieView.MXML. > > Hopes this help you all to help me. > > Main.MXML: > > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" > layout="absolute" > horizontalAlign="center" verticalAlign="middle" > backgroundGradientColors="[#000000, #000000]" > width="100%" height="100%" creationComplete="initApp()" > viewSourceURL="srcview/index.html" > > > <mx:HTTPService id="movieService" url="http://192.168.25.200/PHP/katalog.php" > useProxy="false" > result="srv_results(event)" fault="msFaultHandler(event);" invoke="msInvokeHandler > (event);"/> > <!-- HTTPSerivce for the tv-shows starts here --> > <mx:HTTPService id="tvService" url="http://192.168.25.200/PHP/tvshows.php" > useProxy="false" result="tv_results(event)"/> > <mx:HTTPService id="epService" url="http://192.168.25.200/PHP/tvepisodes.php" > useProxy="false" result="ep_results(event)"/> > <!-- END --> > <!--<mx:Model id="ipService" source="data/ip.xml"/>--> > <mx:Style source="katalog2main.css"/> > <mx:Script> > <![CDATA[ > import mx.managers.CursorManager; > import mx.collections.IViewCursor; > import mx.rpc.events.ResultEvent; > import mx.rpc.events.FaultEvent; > import mx.rpc.events.InvokeEvent; > import mx.collections.ArrayCollection; > import mx.events.ItemClickEvent; > import mx.controls.Alert; > import mx.events.CloseEvent; > import flash.events.Event; > > private function initApp():void > { > movieService.send(); > tvService.send(); > epService.send(); > } > > private function msFaultHandler(event:FaultEvent):void > { > > // There was an error in loading the XML > Alert.show (event.fault.message); > > // Hide the busy cursor > CursorManager.removeBusyCursor(); > } > > // Gets called when HTTPService is invoked to > // request the XML. > private function msInvokeHandler(event:InvokeEvent):void > > { > // Display the busy cursor > CursorManager.setBusyCursor(); > } > > public function srv_results(event:ResultEvent):void > { > movieCollection = event.result.helakatalog.katalog as ArrayCollection; > movieCollection.filterFunction=movieFilter; > //Hide the busy cursor > CursorManager.removeBusyCursor(); > } > > public function tv_results(event:ResultEvent):void > { > tvCollection = event.result.helakatalog.katalog as > ArrayCollection; > //tvCollection.filterFunction=tvshowsFilter; > } > > public function ep_results(event:ResultEvent):void > { > epCollection = event.result.helakatalog.katalog as > ArrayCollection; > //epCollection.filterFunction=episodeFilter; > } > > [Bindable] > private var movieCollection:ArrayCollection; > > [Bindable] > private var tvCollection:ArrayCollection; > > [Bindable] > private var epCollection:ArrayCollection; > > // Filter function > public function movieFilter(item:Object):Boolean > { > var result:Boolean=false; > if (!item.title.length > || item.title.toUpperCase().indexOf(filterInput.text.toUpperCase()) >= 0) > if (!item.genres.length > || item.genres.toUpperCase().indexOf(genresInput.selectedItem.data.toUpperCase > ()) >= 0) > result=true; > > return result; > } > > > ]]> > </mx:Script> > <mx:VBox width="85%" height="100%" verticalCenter="20" horizontalCenter="0" > top="0"> > <mx:ViewStack id="mainViewStack" width="100%" height="100%" creationPolicy="all"> > <!--MovieView HERE --> > <MovieView id="mView" label="Filmer" movieCollection="{movieCollection}" > movieFilter="movieFilter"/> > <!--HomeView HERE--> > <mx:Canvas id="home" label="Start" width="100%" height="100%"> > <mx:VBox width="100%" height="100%" id="startVbox" horizontalCenter="0" > bottom="0"> > <mx:Canvas width="100%" height="400" id="questionCanvas" > horizontalCenter="0" top="0" > > <mx:Image source="assets/question.png" autoLoad="true" > horizontalCenter="0" top="0"/> > <mx:Image source="assets/movie_start.png" autoLoad="true" > horizontalCenter="-99" bottom="134" click="mainViewStack.selectedChild=mView;"/> > <mx:Image source="assets/tv_start.png" autoLoad="true" > horizontalCenter="98" bottom="134" click="mainViewStack.selectedChild=tvView;"/> > </mx:Canvas> > <mx:ApplicationControlBar id="dockedBar" dock="true" width="100%" height="40"> > <mx:HBox horizontalAlign="right" paddingBottom="5" paddingTop="5"> > <mx:Spacer width="100%" id="spacer1"/> > </mx:HBox> > <mx:HBox horizontalAlign="left" width="100%"> > <mx:Image source="assets/star.png" > autoLoad="true" height="16" > verticalAlign="middle" scaleContent="false" id="image1"/> > <mx:Text text="SopranKatalog Ver.2.1 BETA" > color="#ffffff" > fontWeight="bold" fontSize="12" fontFamily="Arial" textAlign="right" id="text1"/> > </mx:HBox> > </mx:ApplicationControlBar> > <mx:HBox id="footer" width="100%"> > <mx:Spacer width="100%" /> > </mx:HBox> > </mx:VBox> > </mx:Canvas> > <!-- TVView HERE --> > <TvView id="tvView" label="TV" epCollection="{epCollection}" > tvCollection="{tvCollection}"/> > > </mx:ViewStack> > > </mx:VBox> > > </mx:Application> > > MovieView.MXML: > > <?xml version="1.0" encoding="utf-8"?> > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" width="100%" > height="100%"> > <mx:Script> > <![CDATA[ > import mx.collections.ArrayCollection; > import mx.events.ItemClickEvent; > import mx.controls.Alert; > import mx.events.CloseEvent; > > [Bindable] > var movieCollection:ArrayCollection; > > > public var u:URLRequest; > > // Event listener to open URL when in dataGrid view > private function dgMovieListClick(eventObj:Event):void { > u = new URLRequest("http://192.168.25.200/Movies/" + > dgMovieList.selectedItem.link); > navigateToURL(u); > Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din > nerladdning", Alert.OK); > } > // Event listener to open URL when in tileList view > private function dgTileListClick(eventObj:Event):void { > u = new URLRequest("http://192.168.25.200/Movies/" + > tilelist1.selectedItem.link); > navigateToURL(u); > Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din > nerladdning", Alert.OK); > } > // Event listener to open Internet URL when in dataGrid view > private function dgInternetClick(eventObj:Event):void { > u = new URLRequest("http://sopran.dnsalias.com/Movies/" + > dgMovieList.selectedItem.link); > navigateToURL(u); > Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din > nerladdning", Alert.OK); > } > // Event listener to open Internet URL when in tileList view > private function internetClick(eventObj:Event):void { > u = new URLRequest("http://sopran.dnsalias.com/Movies/" + > tilelist1.selectedItem.link); > navigateToURL(u); > Alert.show("Högerklicka på filnamnet och tryck spara som..", "Påbörja din > nerladdning", Alert.OK); > } > ]]> > </mx:Script> > <!-- An ArrayCollection with an array of objects. --> > <mx:ArrayCollection id="genres"> > <mx:Array> > <mx:Object label="Alla" data=""/> > <mx:Object label="Action" data="Action"/> > <mx:Object label="Animerat" data="Animerat"/> > <mx:Object label="Drama" data="Drama"/> > <mx:Object label="Komedi" data="Komedi"/> > <mx:Object label="Thriller" data="Thriller"/> > </mx:Array> > </mx:ArrayCollection> > <mx:states> > <!-- MovieList Grid Starts Here --> > <mx:State name="Grid"> > <mx:RemoveChild target="{tilelist1}"/> > <mx:RemoveChild target="{dockedBar}"/> > <mx:AddChild relativeTo="{mainVbox}" > position="lastChild" > target="{dockedBar}"/> > <mx:SetEventHandler target="{stchange}" name="click" > handler="currentState=''"/> > <mx:AddChild relativeTo="{tilecanvas}" > position="lastChild"> > <mx:DataGrid id="dgMovieList" width="100%" > height="100%" > dataProvider="{movieCollection}" doubleClickEnabled="true" > itemDoubleClick="dgMovieListClick(event);" editable="false" borderStyle="none" y="0"> > <mx:columns> > <mx:DataGridColumn > headerText="Titel" dataField="title"/ > > > <mx:DataGridColumn > headerText="Kategori" > dataField="genres"/> > <mx:DataGridColumn > headerText="År" dataField="year"/> > <mx:DataGridColumn > headerText="Utgivare" > dataField="publisher"/> > </mx:columns> > </mx:DataGrid> > </mx:AddChild> > <mx:RemoveChild target="{footer}"/> > <mx:AddChild relativeTo="{mainVbox}" > position="lastChild" > target="{footer}"/> > <mx:SetProperty target="{counterText}" name="height" > value="20"/> > <mx:RemoveChild target="{linkbutton1}"/> > <mx:RemoveChild target="{image1}"/> > </mx:State> > <!-- Tv-Shows List Starts Here --> > <!-- Tv-Shows END --> > <!-- MovieList Grid END --> > </mx:states> > <!-- Define the effects for the transitions between states --> > <mx:transitions> > <!-- Define the transition from the base state to the Grid state.--> > <mx:Transition id="toGrid" fromState="*" toState="Grid"> > <mx:Sequence target="{tilecanvas}" > > <mx:Parallel target="{tilecanvas}"> > <mx:Fade alphaFrom="0" alphaTo="1" duration="1500"/> > <mx:Move yFrom="1500" yBy="-1500" duration="1000"/> > </mx:Parallel> > </mx:Sequence> > </mx:Transition> > > <!-- Define the transition from the TvShows state to the TvEpisodes state.--> > <mx:Transition id="toEpisodes" fromState="TvShows" toState="TvEpisodes"> > <mx:Sequence target="{tilecanvas}" > > <mx:WipeUp duration="1000" /> > </mx:Sequence> > </mx:Transition> > <!-- Define the transition from the Grid state to the base state.--> > <mx:Transition id="toDefault" fromState="Grid" toState="*"> > <mx:Sequence target="{tilecanvas}" > > <mx:Parallel target="{tilecanvas}"> > <mx:Fade alphaFrom="0" alphaTo="1" > duration="1500"/> > <mx:Move yFrom="1500" yBy="-1500" > duration="1000"/> > </mx:Parallel> > </mx:Sequence> > </mx:Transition> > </mx:transitions> > <!-- Transition effects END --> > > <mx:VBox width="100%" height="100%" id="mainVbox" horizontalCenter="0" top="0"> > <mx:Canvas width="100%" height="80%" id="tilecanvas" > > <mx:TileList id="tilelist1" width="100%" height="100%" itemRenderer="thumbnail" > dataProvider="{movieCollection}" > horizontalScrollPolicy="off" borderStyle="none" top="19" > doubleClickEnabled="true" > itemDoubleClick="dgTileListClick(event);" > allowMultipleSelection="false" horizontalCenter="0"/> > </mx:Canvas> > <mx:ApplicationControlBar id="dockedBar" dock="true" width="100%"> > <mx:HBox horizontalAlign="right" paddingBottom="5" paddingTop="5"> > <mx:Image source="assets/zoom.png" autoLoad="true" height="100%" > verticalAlign="middle" scaleContent="false"/> > <mx:TextInput id="filterInput" text="" change="movieCollection.refresh();" > width="166" toolTip="Skriv.."/> > <mx:Spacer width="100%" id="spacer1"/> > <mx:Image source="assets/color_swatch.png" autoLoad="true" height="100%" > verticalAlign="middle" scaleContent="false"/> > <mx:Text text="Kategori" color="#ffffff" fontSize="12" fontFamily="Arial" > fontWeight="bold" textAlign="left" selectable="false"/> > <mx:ComboBox id="genresInput" dataProvider="{genres}" > enabled="true" > color="#ffffff" change="movieCollection.refresh();"/> > </mx:HBox> > <mx:HBox horizontalAlign="right" width="100%" paddingBottom="5" > paddingTop="5"> > <mx:Image source="assets/application_cascade.png" autoLoad="true" > height="100%" verticalAlign="middle" scaleContent="false" id="image2"/> > <mx:LinkButton id="stchange" label="Byta läge" textAlign="left" width="69" > click="currentState='Grid'"/> > <mx:Image source="assets/film.png" autoLoad="true" height="100%" > verticalAlign="middle" scaleContent="false" id="image3"/> > <mx:Text id="counterText" text="{movieCollection.length}" paddingTop="2" > color="#ffffff" fontWeight="bold" textAlign="left" width="30" height="20" > selectable="false" toolTip="Antal filmer som visas"/> > <!--<mx:LinkButton id="intlink" label="Download" />--> > </mx:HBox> > </mx:ApplicationControlBar> > <mx:HBox id="footer" width="100%"> > <mx:LinkButton id="tvchange" label="TvShows"/> > <mx:Spacer width="100%" /> > <mx:Text text="FilmKatalog Ver.2 BETA" color="#ffffff" fontWeight="bold" > fontSize="12" fontFamily="Arial" textAlign="right" id="text1"/> > <mx:Image source="assets/world_link.png" autoLoad="true" height="100%" > verticalAlign="middle" scaleContent="false" id="image1"/> > <mx:LinkButton label="Internet" width="63" click="internetClick(event);" > textAlign="left" toolTip="Klicka här om du befinner dig utanför hemmet" > id="linkbutton1"/> > </mx:HBox> > </mx:VBox> > </mx:Canvas> > > > --- In [email protected], "Michael Labriola" <labriola@> wrote: > > > > > > If I understand your question correctly (and I am not sure that I do), > > I would personally put your filter function in the file that currently > > calls the HTTPService and gets the result. Unless you are using one of > > the, or your own, common frameworks, most people seem to put this in > > their main application file. > > > > Depending a lot on how your code is constructed, you can probably > > apply this filter function in the result handler for your HTTPService. > > > > If I am missing the point, or your setup is more complex, let me know. > > > > As an aside, please take a look at the refresh method of the > > ListCollectionView. If you are not actually replacing the whole > > collection, you could use this to simply apply the filter. > > > > --Mike > > > > --- In [email protected], "pioplacz" <icep87@> wrote: > > > > > > Hi! > > > > > > I was just wondering is it possible to make a filterfunction work > > between ViewStack > > > components. What i mean is i'm calling the HTTP service in my > > main.mxml but showing > > > the results in MovieView.mxml passing the data works fine. But i > > can't figure out where i > > > should write the filter function: > > > > > > // Filter function > > > public function movieFilter(item:Object):Boolean > > > { > > > var result:Boolean=false; > > > if (!item.title.length > > > || > > item.title.toUpperCase().indexOf(filterInput.text.toUpperCase()) >= 0) > > > if (!item.genres.length > > > || > > item.genres.toUpperCase().indexOf(genresInput.selectedItem.data.toUpperCase > > > ()) >= 0) > > > result=true; > > > > > > return result; > > > } > > > > > > and where i should put: > > > > > > movieCollection.filterFunction=movieFilter; > > > > > > From the beginning i had all that in my Main.mxml and it worked > > fine. Can somebody help > > > me, if you even get what i mean ? > > > > > > -- 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/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/flexcoders/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> 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/

