apache-flex - 如何对具有分层数据的AdvancedDataGrid进行排序?

标签 apache-flex sorting actionscript hierarchical-data advanceddatagrid

我有一个 AdvancedDataGrid,其 dataProvider 为 HierarchicalCollectionView。当我查看包含我正在使用的数据集的网格并单击我想要排序的列的标题时,一切都运行良好。它完全按照我的预期按层次结构进行排序。

我现在想做的是当网格显示给用户时已经对其进行排序。有没有办法以编程方式执行此操作?我一生都无法弄清楚如何做到这一点,显然这是可能的,因为 AdvancedDataGrid 内置了此功能。

编辑 - 顺便说一句,我已经尝试过:

var myData:HierarchicalCollectionView = new HierarchicalCollectionView(theDataSource);

// Works fine using only the line above and clicking the header to sort.
// This is the part that I tried adding:
var sort:Sort = new Sort();

sort.fields = [new SortField("startDate")];

myData.sort = sort;
myData.refresh();

就排序而言,这似乎做了一些事情,但它的排序方式与单击列标题的方式不同。顺便说一句,“startDate”是 theDataSource 中对象的一个​​属性。

最佳答案

看起来您想要对日期进行排序。 Sort 无法立即执行此操作。您必须使用 compareFunction

如果您的对象是 Date 类型,则非常简单:

var sortField:SortField = new SortField("startDate");
sortField.compareFunction = ObjectUtil.dateCompare;

如果您的列包含日期作为字符串,您必须首先解析它们(代码示例来自 http://blog.flexexamples.com/2007/08/12/sorting-date-columns-in-a-datagrid/ ):

private function date_sortCompareFunc(itemA:Object, itemB:Object):int
{
    /* Date.parse() returns an int, but
       ObjectUtil.dateCompare() expects two
       Date objects, so convert String to
       int to Date. */
    var dateA:Date = new Date(Date.parse(itemA));
    var dateB:Date = new Date(Date.parse(itemB));
    return ObjectUtil.dateCompare(dateA, dateB);
}

var sortField:SortField = new SortField("startDate");
sortField.compareFunction = date_sortCompareFunc;

然后只需使用 sortField 就像您在示例中所做的那样。这应该可以正常工作。

关于apache-flex - 如何对具有分层数据的AdvancedDataGrid进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476180/

相关文章:

apache-flex - 在 URL 中传递 cookie?

actionscript-3 - Actionscript 3 是否提供列表理解和 lambda 演算?

iphone - Adobe Air/Actionscript/Flex 适用于 IOS iPhone 4 摄像头旋转 90 度

apache-flex - Spark DropDownList 作为 AdvancedDataGrid 中的 itemEditor 的问题

apache-flex - 如何解决 Flash 错误 2176

C++ 冒泡排序 : Biggest number becomes random

c# - 如何对数字字符串列表进行排序?最好使用 LINQ

algorithm - 磁盘搜索/排序算法

c# - 将 Flash 转换为 C# 时出错

java - 如何使用 Flex 对数据网格中的 dd/mm/yy 日期格式进行排序?