Sorry forgot to add text box code <mx:TextInput id="txtSearch" x="17" y="75" change="doChange()"/> doChange is called the moment user starts entering text in the text input Thanks for all of your time Anuj
On Tue, Dec 9, 2008 at 4:10 PM, anuj181 <[EMAIL PROTECTED]> wrote: > Hi All > Guys This is regarding the problem I had few days back. I made > filtering of the List partially working for my app after taking some > help from this group, but I realize a bug in my program. I am making > rest calls to load data in form of XML in List. I need to apply filter > on this list. Depending upon the text entered in the text box , the > list should filter. Now my problem is that the filter is working if > user types the id of my XML node, however I want my code to go through > all the XML file and checks if the entered text matches the attribute > named friendly name and will filter depending upon the friendly name. > Please help me out, Below is the code and I would appreciate if > someone gives me right direction to make it completely working, Please > let me know also if the code is not documented correctly to make it > more sense > Thanks > Anuj > //XML File > <devices> > <device id="uuid:ac14231535625133346546"> > <attributes> > <attribute name="Flex"/> > <attribute name="monitor">monitoring</attribute> > <attribute name="version">2.0</attribute> > <attribute name="location">location</attribute> > <attribute name="friendly-name">Camera1</attribute> > <attribute name="type">AIR</attribute> > </attributes> > <schedules/> > </device> > </devices> > /**********************CODE*********************/ > //This is REST CALL > <mx:HTTPService id="devicesXML" method="GET" resultFormat="e4x" > result="devicesXMLHandler(event)" showBusyCursor="true"> > </mx:HTTPService> > //THis makes call to server > devicesXML.url="http://"+IP+"/config/devices"; > //Thid function is called when values are retreived > private function devicesXMLHandler(event:ResultEvent):void > { > devicesList = event.result.device; > > //Checks every device > for each (var devicesInPool:* in devicesList) { > var deviceName:String = [EMAIL PROTECTED]; > //var label:[EMAIL PROTECTED]; > devicesInList.push(deviceName); > filteredDevices=new ArrayCollection(devicesInList); > > nvrsInPoolList.dataProvider = filteredDevices; > filteredDevices.filterFunction=processFilter; > } > > //This function calls for assigning label for the entries in the List > box named nvsInPoolList > > private function assignFriendlyName(item:Object):String > { > //Checks every device > for each (var devicesID:* in devicesList) { > var deviceName:String = [EMAIL PROTECTED]; > //Checks if the current deviceID matches the current item, if so > it will search its attributes > if(deviceName == item.toString()) { > var devicesText:XMLList = > devicesID.child("attributes").child("attribute"); > //Checks every attribute tag for each device > for each (var attributesFriendlyName:* in devicesText) { > //Checks if the attribute name is friendly-name > if([EMAIL PROTECTED] == 'friendly-name') { > var friendlynameText:String = attributesFriendlyName.toString(); > return friendlynameText; > } > } > > } > } > return item.toString(); > } > //Filtering Data in the Device List > private function processFilter(item:Object):Boolean > { > return > String(item).toUpperCase().indexOf(filterText.toUpperCase()) >= 0; > } > //Tracking the typed Camera Name > private function doChange():void > { > if(txtSearch.text!=null) > { > this.filterText=txtSearch.text; > this.filteredDevices.refresh(); > } > } > > <mx:List id="nvrsInPoolList" allowMultipleSelection="true" > dragMoveEnabled="true" dragEnabled="true" dropEnabled="true" > y="105" x="17" height="462" width="294"/> > > >

