Flex GroupingCollection:遍历子项

时间:2009-11-13 20:08:42

标签: flex flex3 adobe advanceddatagrid

我正在使用GroupingCollection绑定我的advanceddatagrid。我已经使用groupingcollection按日期对数据进行分组。

现在我需要通过代码选择datagrid中的数据。有没有人知道如何做到这一点?我需要遍历adg的dataprovider并选择符合选择条件的项目。

请告知

谢谢:)

2 个答案:

答案 0 :(得分:1)

好的,根据解释问题的方式,此代码将找到与所选分组年匹配的项目。我在click=findStuff(event)添加了mx:AdvancedDataGrid,如下所示:

[Bindable]  
public var myData:ArrayCollection = new ArrayCollection([
    {name:'Denise', grad:'2000'},
    {name:'Steph', grad:'1990'},
    {name:'Jane', grad:'2000'},
    {name:'Nicole', grad:'2000'},
    {name:'Donna', grad:'1990'}]);

public function findStuff(e:Event):void {
    var groupColl:GroupingCollection = adGrid.dataProvider.source;
    var items:Object = groupColl.source;

    var ac:ArrayCollection = new ArrayCollection();
    for (var i:int=0; i<items.length; i++) {
        if (items[i].grad == e.target.text) {
            ac.addItem(items[i].name);
        }
    }
    Alert.show("selected items: " + ac.toArray());
}

<mx:GroupingCollection id="coll" source="{myData}">
    <mx:Grouping>
        <mx:GroupingField name="grad" />
    </mx:Grouping>
</mx:GroupingCollection>

<mx:AdvancedDataGrid id="adGrid" dataProvider="{coll}"
                         click="findStuff(event)"
                         initialize="coll.refresh()">
    <mx:columns>
        <mx:AdvancedDataGridColumn headerText="name" dataField="name"/>
    </mx:columns>
</mx:AdvancedDataGrid>

请注意,首先我从AdvancedDataGrid dataProvider获取GroupingCollection,然后从GroupingCollection获取项目。这些可以组合成一个步骤,但这种方式对于示例更具可读性。我不确切知道您要查找的数据我只是从数据name抓取item字段,但没有理由不能抓住整个item

希望这是朝着正确方向迈出的一步。

答案 1 :(得分:0)

source属性应包含数据的平面表示。