1

ArrayCollectionに、特定の値(アルファベット順ではない)で並べ替えたいアイテムのリストがあります。このようにソートすることは可能ですか?

注文したい値は次のとおりです。

解決済み
クローズド
オープン

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
提供された回答に加えて
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

配列コレクションがDataGridの一部である場合は、DataGridのGridColumnでsortCompareFunctionを設定できます。このソート比較関数では、フィールドではなくグリッド列が渡されるため、構文が異なることに注意してください。

SparkDataGrid
で使用されるサンプルコード

        private var desiredItemOrder:Array = ["In Progress", "Open", "Resolved", "Closed"];

        private function sortCompareFunction(item:Object, anotherItem:Object, column:GridColumn = null):int
        {
            var itemIndex:Number = desiredItemOrder.indexOf(item.fields.status.name);
            var anotherItemIndex:Number = desiredItemOrder.indexOf(anotherItem.fields.status.name);

            if (itemIndex == -1 || anotherItemIndex == -1)
                throw new Error("Invalid value for criticality ");
            if (itemIndex == anotherItemIndex)
                return 0;
            if (itemIndex > anotherItemIndex)
                return 1;
            return -1;
        }


        <s:DataGrid dataProvider="{issuesCollection}">
            <s:columns>
                <s:ArrayList>
                    <s:GridColumn dataField="fields.status.name" headerText="Status" sortCompareFunction="sortCompareFunction"/>
                </s:ArrayList>
            </s:columns>
        </s:DataGrid>

DOCUMENATION
ソートcompareFunctionDataGridColumnsortCompareFunction
GridColumn
sortCompareFunction

4

2 に答える 2

2

これはあなたに役立つかもしれません

Flex での ArrayCollection の並べ替え

于 2012-09-04T21:32:05.283 に答える
1

3 つの単語のみを並べ替えたい場合は、次のように並べ替え関数でこの比較を行います。

private static var valuesOrder : Array = ["Resolved", "Closed", "Open"];
private function sortFunction(a:Object, b:Object, array:Array = null) : int{
    var indexA : int = valuesOrder.indexOf(a);
    var indexB : int = valuesOrder.indexOf(b);
    return indexA - indexB;//return positive if indexA > indexB
}
var sort : Sort = new Sort();
sort.compareFunction = sortFunction;
arrayCollection.sort = sort;
arrayCollection.refresh();

値が配列に存在しない場合、valuesOrderインデックスは -1 になることに注意してください。あなたが望むように、この状況を処理します。

于 2012-09-08T15:59:42.073 に答える