Apache flex 按内部类对数组集合进行Flex排序
我想以一种我不确定是否可能的方式对数组集合进行排序 通常,当你想分类时,你会有这样的东西Apache flex 按内部类对数组集合进行Flex排序,apache-flex,sorting,actionscript,flex4,Apache Flex,Sorting,Actionscript,Flex4,我想以一种我不确定是否可能的方式对数组集合进行排序 通常,当你想分类时,你会有这样的东西 var dataSortField1:SortField = new SortField(); dataSortField1.name = fieldOneToSortBy; dataSortField1.numeric = fieldOneIsNumeric; var dataSort:Sort = new Sort(); dataSort.fields = [dataSortField1]; arr
var dataSortField1:SortField = new SortField();
dataSortField1.name = fieldOneToSortBy;
dataSortField1.numeric = fieldOneIsNumeric;
var dataSort:Sort = new Sort();
dataSort.fields = [dataSortField1];
arrayCollection.sort = dataSort;
arrayCollection.refresh();
如果我有课
public class ToSort {
public var int:a
}
我会打字
var ts1:ToSort = new ToSort();
ts1.a = 10;
var ts2:ToSort = new ToSort();
ts2.a = 20;
var arrayCollection:ArrayCollection = new ArrayCollection([ts1, ts2])
var dataSortField1:SortField = new SortField();
dataSortField1.name = "a";
dataSortField1.numeric = true;
var dataSort:Sort = new Sort();
dataSort.fields = [dataSortField1];
arrayCollection.sort = dataSort;
arrayCollection.refresh();
这个很好用。我的问题是,我现在继承了一个类,该类中有另一个类,我还需要对此进行排序。
比如说
public class ToSort2 {
public var int:a
public var ToSortInner: inner1
}
public class ToSortInner {
public var int:aa
public var int:bb
}
如果a在多个类中是相同的,那么我想排序到Ortiner2.aa,这是可能的。我试图将inner1.aa作为排序字段名传入,但这不起作用
希望这是清楚的。如果没有,我会发布更多的代码
谢谢,Sort还有另一个属性compareFunction。您需要编写一个自定义排序。您可以深入到函数中的对象属性 在概念上类似于这样:
public function aSort(a:Object, b:Object, fields:Array = null):int{
if(a.aa is b.aa){
return 0
} else if(a.aa > b.aa) {
return 1
} else{
return -1
}
}
创建排序对象时,可以指定比较函数:
var dataSort:Sort = new Sort();
dataSort.compareFunction = aSort;
arrayCollection.sort = dataSort;
arrayCollection.refresh();