在Flex中对ArrayCollection进行排序

时间:2009-10-21 17:40:51

标签: flex

在Flex中有什么方法我们可以根据字符串对arraycollection进行排序。

我有一个数据提供者,其字符串如“Critical”“High”“Medium”“Low”  我需要在哪里进行排序,以便我需要将Critical显示在顶部,接下来是High,Medium和Low。

有人可以告诉我任何逻辑。

谢谢, 库马尔

1 个答案:

答案 0 :(得分:23)

ArrayCollectionListCollectionView的子类,其sort propertySort类有一个compareFunction property,您可以使用它来定义自定义排序函数。

private function sortFunction(a:Object, b:Object, array:Array = null):int
{
   //assuming that 'level' is the name of the variable in each object 
   //that holds values like "Critical", "High" etc
   var levels:Array = ["Low", "Medium", "High", "Critical"];
   var aLevel:Number = levels.indexOf(a.level);
   var bLevel:Number = levels.indexOf(b.level);
   if(aLevel == -1 || bLevel == -1)
      throw new Error("Invalid value for criticality ");
   if(aLevel == bLevel)
      return 0;
   if(aLevel > bLevel)
      return 1;
   return -1;
}
var sort:Sort = new Sort();
sort.compareFunction = sortFunction;
arrayCollection.sort = sort;
arrayCollection.refresh();