【发布时间】:2012-08-29 14:11:11
【问题描述】:
我有一个 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>
文档
Sort compareFunction
DataGridColumn sortCompareFunction
GridColumn sortCompareFunction
【问题讨论】:
-
简短的回答是使用 sortCompareFunction;如需更长的答案,请查看另一个问题;或在这些文档中:help.adobe.com/en_US/flex/using/…
-
谢谢。相关问题有所帮助。顺便说一句,我在您链接的页面上的 sortCompareFunction 上没有看到任何内容,但我在该页面上的链接 help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… 上的 compareFunction 上找到了一些内容。
-
关于重复问题,该问题提供了一个没有进一步信息的解决方案,但仅此一项并没有给我我正在寻找的细节。感谢您提供的文档链接。
标签: apache-flex sorting flex4 arraycollection