2009-10-27 15 views
0

我使用dataProvider的advance datagrid作爲HierarchicalData。這是我的一個數組集合strature如何使用flex3將HierarchicalCollectionView轉換爲數組?

private var groupList:ArrayCollection = new ArrayCollection([ 
               {Country:'India', children:[ 
                               {Matches:'India Test series 1',isEnable:false}, 
                               {Matches:'India Test series 2',isEnable:false}, 
                               {Matches:'India Test series 3',isEnable:false}]}, 
               {Country:'Australia', children:[ 
                               {Matches:'Australia Test series 1',isEnable:false}, 
                               {Matches:'Australia Test series 2',isEnable:false}, 
                               {Matches:'Australia Test series 3',isEnable:false}]}, 
               {Country:'japan', children:[ 
                               {Matches:'Australia Test series 1',isEnable:false}, 
                               {Matches:'Australia Test series 2',isEnable:false}, 
                               {Matches:'Australia Test series 3',isEnable:false}]}, 
               
            ]); 

我想得到這樣的比賽細節特定數據和計數哪一個是(isEnable ==真)值。所以轉換HierarchicalCollectionView以陣列狀

var hCollView:HierarchicalCollectionView = updategrid.dataProvider as HierarchicalCollectionView; 

     var hCollData:HierarchicalData = hCollView.source as HierarchicalData; 

     var hArrayColl:ArrayCollection = hCollData.source as ArrayCollection; 

     var hArray:Array = hArrayColl.source as Array; 


     for(var i:Number=0;i<hArray.length;i++) 
    { 


     Alert.show(hArray[i].Country); 




     if(hArray[i].isEnable=="true") 
     { 
        count1++; 

     } 


     } 

這表明全國唯一的細節,但如果我想比賽和isEnable不在陣中。我如何找到isEnable並匹配詳細信息?請參考我

回答

0

你仍然只測試循環中的頂級兒童。將其更改爲,

for(var i : Number = 0; i < hArray.length; i++) { 
    Alert.show(hArray[i].Country); 
    for each (match : Object in hArray[i].children) { 
     if (match.isEnable) { 
      count1++; 
     } 
    } 
} 

這樣,您就可以循環訪問每個頂級對象的子級以訪問匹配對象。

您應該考慮爲Country和Match對象創建一個類型化對象,這樣您就可以更容易地封裝這種類型的行爲。

+0

哦,還有Yay for cricket!第一次板球相關的問題我看到過! – 2009-10-27 09:34:44

+0

你確定!謝謝您的寶貴信息格雷戈爾小童 – 2009-10-27 11:29:01

+0

它有兩個chlidren那麼如何對每個做這 – 2009-10-28 08:09:08

0
public static function convertHCollViewToArrColl(hcoll: HierarchicalCollectionView): ArrayCollection 
{ 
    var arrcoll: ArrayCollection = new ArrayCollection(); 
    fectchNodeFromHColl(hcoll, null, arrcoll); 
    return arrcoll; 

} 

internal static function fectchNodeFromHColl(hcoll: HierarchicalCollectionView, node: Object, targetArrayColl: ArrayCollection): void 
{ 
    var subNodes: ICollectionView; 

    if(node == null) 
    { 
     subNodes = (hcoll.source as HierarchicalData).source as ArrayCollection; 
    }else 
    { 
     targetArrayColl.addItem(node); 
     subNodes = hcoll.getChildren(node); 

    } 

    if(subNodes !=null && subNodes.length > 0) 
    { 
     for each(var n: Object in subNodes) 
     { 
      fectchNodeFromHColl(hcoll, n, targetArrayColl); 
     } 
    } 
}