-1

FlashBuilder4.6を使用してarrayCollectionを並べ替えたい。配列には、2つのプロパティstatusとhelp_idがあります。配列を並べ替えて、すべての「オープン」ステータス、すべての「読み取り」、「オンサイト」、「完了」などを表示したいと思います。これを行う関数を作成しましたが、同じステータスのすべてのアイテムを、help_idプロパティで並べ替えるよりも最初に最も低く最後に並べ替えたいと考えています。

これは、ステータスを並べ替えるための私のコードです。

    [Bindable]protected var myHelp:ArrayCollection = new ArrayCollection();

ソート機能:

    function sortFunction(a:Object, b:Object, array:Array = null):int
                {

                    var status:Array = ["open", "read", "onsite","complete", "reopen", "closed"];
                    var aStatus:Number = status.indexOf(a.status);
                    var bStatus:Number = status.indexOf(b.status);
                    if(aStatus == -1 || bStatus == -1)
                        throw new Error("Invalid value for criticality ");
                    if(aStatus == bStatus)
                        return 0;
                    if(aStatus > bStatus)
                        return 1;
                    return -1;
                }
                var sort:Sort = new Sort();
                sort.compareFunction = sortFunction;
                myHelp.sort = sort;
                myHelp.refresh();

どんな助けでも大歓迎です。

4

1 に答える 1

0

配列で文字列インデックスを探す代わりに、両方にintを使用してみませんか。コードでは、StatusType.OPENなどの定数を参照できます。その場合、コードは次のようになります。

var sort:Sort = new Sort();
sort.fields = [new SortField("status", true, true), new SortField("help_id", true, true)];
myHelp.sort = sort;
myHelp.refresh();

これは、ステータスとhelp_idで同時に並べ替えられます。次に、GUIでユーザーにステータスを表示する必要がある場合は、intを人間が読み取れる文字列の値に変換します。

于 2012-11-02T21:29:54.863 に答える