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 - 使用Flex使本地SQLite数据库与实时服务器数据库保持同步

apache-flex - 如何在 flex 中将字符串数据类型转换为日期数据类型

javascript - 在 AngularJS 中排序时删除行和 localStorage 键

java - Hadoop Map Reduce - 如何将分组与排序分开?

javascript - 为什么我的 ActionScript3 不调用我的 JavaScript 函数?

javascript - 从 ActionScript 调用 ExtJS 函数

Flash Builder 4.6 问题 : Access to undefined property - clean its not the answer

xml - XSLT 按名称对节点进行排序?

php - 查找居住在指定距离之间的用户(使用用户的邮政编码)

iphone - 适用于 iPhone 的 Flex 应用程序