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

Reply via email to