2010-07-15 84 views
3

我有一个正在由客户数据填充的AdvancedDataGrid。每个客户有3个月产品(1,3,6),还有一个passed字段,指定客户是否有资格获得任何月度产品。Flex AdvancedDataGrid排序

现在网格按字母顺序排列客户数据,这是一件好事,但它并不排序每月的产品,而不是那么好的东西。

dataProvider看起来像这样。 (我被出资者分组。)

{Funder:"Customer1", Product:"1 Month", Passed:"False"}, 
{Funder:"Customer1", Product:"3 Month", Passed:"True"}, 
{Funder:"Customer1", Product:"6 Month", Passed:"True"}, 
{Funder:"Customer2", Product:"1 Month", Passed:"False"}, 
{Funder:"Customer2", Product:"3 Month", Passed:"False"}, 
{Funder:"Customer2", Product:"6 Month", Passed:"False"} 

然后导致我在网格中得到看起来是这样的

---------------------------------------- 
| 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> 

回答

3

好的,所以我找到了适合我的解决方案。接下来是。

基本上,在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 
} 

希望看到这样做的另一种方式,因为我不能认为这是做

1

对于所有意图和目的的代码,不对电网数据进行排序。它只是按照您指定的顺序显示您提供的数据。 dataProvider必须由您排序,并且网格会相应更新。

如果你通过单击列标题排序,然后如果你使用的ArrayCollection或的XMLListCollection看看在sortCompareFunction上的AdvancedDataGridColumn

,然后看看这个documentation如何排序它。

+0

我知道网格不会为您排序数据。事情是,数据被排序并且网格以随机顺序显示它。我需要一种方法来以正确的方式显示数据。谢谢你提出了sortCompareFunction,试过了,但它没有奏效。 – 2010-07-15 13:23:06

+0

从您的问题“网格正在整理客户数据”。我发现很难相信网格会对您的数据做任何处理。如果您单击其中一个标题对数据进行排序,则sortCompareFunction将仅起作用。您对于creationComplete上的数据应用排序的解决方案看起来很好。你以前没有对这些数据进行排序吗? – JeffryHouser 2010-07-15 13:47:37

+0

不,我没有应用排序之前,但数据按字母顺序排序,即使它没有排序在dataProvider中。我想这可能是按照字母顺序排列dataProvider的分组? – 2010-07-16 06:35:04