Apache flex Flex AdvancedDataGrid排序

Apache flex Flex AdvancedDataGrid排序,apache-flex,sorting,advanceddatagrid,Apache Flex,Sorting,Advanceddatagrid,我有一个由客户数据填充的AdvancedDataGrid。每个客户都有3个月度产品(1、3、6),还有一个已通过的字段,指定客户是否有资格获得任何月度产品 现在网格按字母顺序对客户数据进行排序,这是一件好事,但它并没有对每月的产品进行排序,这不是一件好事 数据提供者看起来像这样。(我是按出资人分组的。) 然后我在网格中得到的结果是这样的 ---------------------------------------- | Funder & Products | Product P

我有一个由客户数据填充的AdvancedDataGrid。每个客户都有3个月度产品(1、3、6),还有一个
已通过的
字段,指定客户是否有资格获得任何月度产品

现在网格按字母顺序对客户数据进行排序,这是一件好事,但它并没有对每月的产品进行排序,这不是一件好事

数据提供者看起来像这样。(我是按出资人分组的。)

然后我在网格中得到的结果是这样的

 ----------------------------------------
| Funder & Products   |  Product Passed  |
 ----------------------------------------
| Customer1           |                  |
|    6 Month          |  True            |
|    3 Month          |  True            |
|    1 Month          |  False           |
| Customer2           |                  |
|    3 Month          |  False           |
|    6 Month          |  False           |
|    1 Month          |  False           |
 ----------------------------------------
对产品分类有什么帮助吗

编辑:

下面是我用于网格的代码

<mx:AdvancedDataGrid id="myADG" 
                     width="100%" height="100%"
                     initialize="gc.refresh();"
                     folderClosedIcon="{null}"
                     folderOpenIcon="{null}"
                     defaultLeafIcon="{null}">

    <mx:dataProvider>
        <mx:GroupingCollection id="gc" source="{mCustomerData}">
            <mx:grouping>
                <mx:Grouping>
                    <mx:GroupingField name="Funder"/>
                </mx:Grouping>
            </mx:grouping>
        </mx:GroupingCollection>
    </mx:dataProvider>        

    <mx:columns>
        <mx:AdvancedDataGridColumn dataField="Product" 
                                   headerText="Funder &amp; Products"/>
        <mx:AdvancedDataGridColumn dataField="Passed"
                                   headerText="Product Passed"/>
        <mx:AdvancedDataGridColumn dataField="Passed"
                                   headerText="Product Failed"/>
    </mx:columns>
</mx:AdvancedDataGrid>

无论出于何种目的,网格都不会对数据进行排序。它只显示您按指定顺序提供的数据。数据提供者必须由您排序,网格将相应地更新

如果要通过单击列标题进行排序,请查看AdvancedDataGrid列上的


如果您使用的是ArrayCollection或XMLListCollection,那么请看一下如何对其进行排序。

好的,我找到了一个适合我的解决方案。下面是

基本上,在
creationComplete
上,我调用执行以下操作的
sortData
函数

private function sortData():void {
    var sort:Sort = new Sort();
    var sortField:SortField = new SortField("Product");

    sort.fields = [sortField];        // Set 'Product' as the field to be sorted on
    myADG.dataProvider.sort = sort;   // Add the sort to the dataProvider of the dataGrid
    gc.source.refresh();              // Refresh the GroupCollection
}

希望看到另一种方法,因为我不认为这是唯一的方法

也有同样的问题,并在Adobe的网站上找到了解决方案:


您可以编写一个比较函数,并在分组字段上使用它。

我知道网格不会为您排序数据。问题是,数据被排序,网格以随机顺序显示它。我需要一种方法以正确的方式显示数据。感谢您提出SortComparency,尝试过,但没有成功。从您的问题“网格正在对客户数据进行排序”。我发现很难相信网格正在对您的数据进行任何排序。只有单击其中一个标题对数据进行排序时,排序比较才会生效。您对creationComplete上的数据应用排序的解决方案似乎很好。您以前没有对数据应用排序吗?没有,我以前没有应用排序,但是数据是按字母顺序排序的,即使它在数据提供程序中没有排序。我想可能是分组按字母顺序排列了数据提供者?我不确定,但这对我来说是有意义的。
private function sortData():void {
    var sort:Sort = new Sort();
    var sortField:SortField = new SortField("Product");

    sort.fields = [sortField];        // Set 'Product' as the field to be sorted on
    myADG.dataProvider.sort = sort;   // Add the sort to the dataProvider of the dataGrid
    gc.source.refresh();              // Refresh the GroupCollection
}