gpt4 book ai didi

apache-flex - 如何使用分层数据对 AdvancedDataGrid 进行排序?

转载 作者:行者123 更新时间:2023-12-04 06:30:32 26 4
gpt4 key购买 nike

我有一个以 HierarchicalCollectionView 作为它的 dataProvider 的 AdvancedDataGrid。当我查看包含我正在使用的数据集的网格并单击我希望排序的列的标题时,一切正常。它按照我期望的方式对它进行分层排序。

我现在想要做的是在向用户显示时已经对网格进行了排序。有没有办法以编程方式做到这一点?我一生都无法弄清楚如何做到这一点,很明显这是可能的,因为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com