Php 如何使用flex3将HierarchycalCollectionView转换为阵列?

Php 如何使用flex3将HierarchycalCollectionView转换为阵列?,php,apache-flex,actionscript,flash,Php,Apache Flex,Actionscript,Flash,我使用dataProvider的AdvanceDataGrid作为HierarchycalData。这是我的阵列收集策略 private var groupList:ArrayCollection = new ArrayCollection([                {Country:'India', children:[                                {Matches:'India Test series 1',isEnable:false},    

我使用dataProvider的AdvanceDataGrid作为HierarchycalData。这是我的阵列收集策略

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==true)值。因此,将HierarchycalCollectionView转换为类似数组的

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

        }


       }
var hCollView:HierarchycalCollectionView=updategrid.dataProvider作为HierarchycalCollectionView;
var hCollData:hierarchycaldata=hCollView.source作为HierarchycalData;
var hArrayColl:ArrayCollection=hCollData.source作为ArrayCollection;
var hArray:Array=hArrayColl.source作为数组;

对于(var i:Number=0;i您仍然只测试循环中的顶级子级。将其更改为

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++;
        }
    }
}
for(变量i:Number=0;i
这样,您就可以通过每个顶级对象的子对象循环访问匹配对象


你可能应该考虑为你的国家和匹配对象创建一个类型化对象,这样你就可以更容易地封装这种行为。

哦,对板球来说,是的!我在上面看到的第一个板球相关问题!是的!谢谢你宝贵的信息Gregor Kiddiet有两个孩子,那么如何为ea做到这一点呢ch(match:objectinharray[i].children.children){if(match.isEnable){count1++;}是否可能做到这一点您最好编写一个递归函数,检查对象是否有子对象,然后对这些子对象调用相同的函数……这将处理子对象的任何嵌套级别。
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);
        }
    }
}