0

arraycollectionに格納されている文字列のリストを並べ替えようとしています。しかし、ソートされた結果は正しくありません。私のコードを見てください。

spark.collections.Sort

if(value is ArrayCollection){
            var sort:Sort=new Sort();
            var sortField:SortField = new SortField("data")
            sortField.numeric=false;
            sort.fields=[sortField];

            ArrayCollection(value).sort=sort;
            ArrayCollection(value).refresh();
        }

入力:Start With、Contains、End With、Equals IgnoreCase、Not Equals、Matching、Equals

出力:Iquals IgnoreCase、Contains、End With、Start With、Not Equals、Matching、Equals

(上記のように)1つの行だけが別の行とスワップしている場合もあれば、まったくソートされていない場合もあります。

4

1 に答える 1

5

文字列のリストを持つ配列コレクションの場合。ケースのSortFieldの名前を指定する必要はありませんdata

            var value:ArrayCollection = new ArrayCollection(['Start With','Contains','End With','Equals IgnoreCase','Not Equals','Equals']);
            var dataSortField:SortField = new SortField(); //Leave it empty.
            dataSortField.numeric = false;

            var dataSort:Sort = new Sort();
            dataSort.fields=[dataSortField];

            value.sort = dataSort;
            value.refresh();

o / p:

   "value"  mx.collections.ArrayCollection (@31ced61)   
[0] "Contains"  
[1] "End With"  
[2] "Equals"    
[3] "Equals IgnoreCase" 
[4] "Not Equals"    
[5] "Start With"

データプロパティを持つオブジェクトを持つarraycollectionの場合、コードは絶対に正しいです。お気に入り

            var value:ArrayCollection = new ArrayCollection();
            value.addItem({data:'Start With'});
            value.addItem({data:'Contains'});
            value.addItem({data:'End With'});
            value.addItem({data:'Equals IgnoreCase'});
            value.addItem({data:'Not Equals'});
            value.addItem({data:'Equals'});

この場合、次のように指定する必要があります

var sortField:SortField = new SortField("data");
于 2012-12-13T11:49:39.580 に答える