1

我有一个 ArrayCollection 中的项目列表,我想按某个值(不按字母顺序)排序。可以这样排序吗?

以下是我想要排序的值:

已解决
关闭
打开

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_
_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果您的数组集合是 DataGrid 的一部分,那么您可以在 DataGrid 的 GridColumn 上设置 sortCompareFunction。请注意,此排序比较函数的语法不同,因为传入的是网格列而不是字段。

与 Spark DataGrid 一起使用的示例代码

        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
排序 compareFunction
DataGridColumn sortCompareFunction
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 回答