HI, Here's a test application that tests a few more (broken) filter and sorting conditions.
In teh current 4.10 it produces 4,3,3 and 4 which is correct. <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" initialize="init()"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.collections.Sort; import spark.collections.SortField; [Bindable] public var ac:ArrayCollection; public var players:Array=[ {team:"TeamOne",jerseyNumber:80,lastName:"PlayerA",firstName:"Aa"}, {team:"TeamTwo",jerseyNumber:7, lastName:"PlayerB",firstName:"Bb"}, {team:"TeamOne",jerseyNumber:12, lastName:"PlayerC",firstName:"Cc"}, {team:"TeamOne",jerseyNumber:21,lastName:"PlayerD",firstName:"Dd"}, {team:"TeamThree",jerseyNumber:34, lastName:"PlayerE",firstName:"Ee"}, {team:"TeamOne",jerseyNumber:12, lastName:"PlayerF",firstName:"Ff"}, {team:"TeamTwo",jerseyNumber:7, lastName:"PlayerG",firstName:"Gg"}, ]; private function init():void { ac = new ArrayCollection(players); var s:Sort = new Sort(); var f:SortField = new SortField("jerseyNumber"); ac.filterFunction = function (item:Object):Boolean { return item.jerseyNumber >= 12 && item.jerseyNumber <= 34; } s.fields = [f]; ac.sort = s; ac.refresh(); trace(ac.length); // should be 4 var oldValue:Number = players[2].jerseyNumber; players[2].jerseyNumber = 80; ac.itemUpdated(players[2], 'jerseyNumber', oldValue, 80); trace(ac.length); // should be 3 oldValue = players[4].jerseyNumber; players[4].jerseyNumber = 33; ac.itemUpdated(players[4], 'jerseyNumber', oldValue, 33); trace(ac.length); // should still be 3 oldValue = players[2].jerseyNumber; players[2].jerseyNumber = 22; ac.itemUpdated(players[2], 'jerseyNumber', oldValue, 22); trace(ac.length); // back to 4 } ]]> </mx:Script> </mx:Application> Thanks, Justin
