2010-07-15 93 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