在组件中将arraycollection指定为主应用程序中的datagrid的数据提供者

时间:2012-12-31 16:53:08

标签: actionscript-3 flex flex4.6 advanceddatagrid arraycollection

嗨,我有一个简单的(我认为)问题。我在Flex 4.6中有以下自定义组件(部分代码)。

<fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:ArrayCollection id="acItems"/>
        <s:ArrayCollection id="acOrder" source="{orderItems.source}"/>
    </fx:Declarations>
    <fx:Script>     
        <![CDATA[
            [Bindable]
            public var orderItems:ArrayCollection = new ArrayCollection();

            private function addToOrder():void
            {
                orderItems.addItem(itemGrid.selectedItem);
            }
        ]]>
    </fx:Script>

    <mx:AdvancedDataGrid id="itemGrid" dataProvider="{acItems}" width="100%" height="100%" borderVisible="false" click="addToOrder()">
        <mx:columns>
            <mx:AdvancedDataGridColumn width="200" dataField="omschrijving" headerText="omschrijving"/>
            <mx:AdvancedDataGridColumn dataField="prijs" headerText="prijs"/>
        </mx:columns>
    </mx:AdvancedDataGrid>  

所以每当我点击一个项目时,都会被添加到一个数组集合中。

现在我在主应用程序中调用此组件。它充满了数据库中的数据。这一切都正常,所以我不认为代码是解决我的问题所必需的:)

<components:Items acItems="{acItems}"/>

在这个组件旁边,我的主应用程序中有另一个数据网格。这个应该填充我在自定义组件中创建的arraycollection。但我不知道如何将此arraycollection指定为datagrid的数据提供者。有想法的人吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是在两个视图中注入一个ArrayCollection。如果您使用像RobotLegs这样的MVC框架,那么这些设计原则将由框架强制执行(除非您不以错误的方式使用)。

实际上我建议学习MVC,而不仅仅依赖Adobe的简化样本。