首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问Flex3 ViewStack中的其他面板?

如何访问Flex3 ViewStack中的其他面板?
EN

Stack Overflow用户
提问于 2011-03-29 05:00:22
回答 3查看 659关注 0票数 2

我有一个有两个面板的ViewStack:

代码语言:javascript
复制
<mx:ViewStack id="viewstack1" height="243">
<mx:Panel id="gridPanel">
    <mx:DataGrid id="grid" right="10" left="10" top="10" bottom="10" width="300" height="150" itemClick="showDetails(event)">
        <mx:columns>
                <mx:DataGridColumn headerText="ID" dataField="Id"/>
                <mx:DataGridColumn headerText="Summary" dataField="Summary"/>
            </mx:columns>
        </mx:DataGrid>
    </mx:Panel>
    <mx:Panel id="detailsPanel">
        <mx:HBox width="100%" height="100%">
            <mx:VBox height="100%" width="228" id="detailsVbox">
                <mx:Label text="Label" id="itemTitle"/>
                <mx:Text text="Text" id="itemSummary"/>
                <mx:DataGrid height="97">
                    <mx:columns>
                        <mx:DataGridColumn headerText="Property" dataField="col1"/>
                        <mx:DataGridColumn headerText="Value" dataField="col2"/>
                    </mx:columns>
                </mx:DataGrid>
            </mx:VBox>
            <mx:Image source="images/BackButton.png" width="50" height="50" click="viewstack1.selectedChild = gridPanel"/>

        </mx:HBox>
</mx:Panel>     
</mx:ViewStack>

我想让用户单击第一个面板中的网格项,然后将数据加载到第二个面板中的面板中。我可以在itemClicked处理程序中获取所单击项目的索引值,但是如何访问detailsPanel以根据网格中的行信息设置值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-29 06:55:35

我不确定这是否是你想要的,但你可以这样做:

代码语言:javascript
复制
private function showDetails(event:ListEvent):void {
    itemTitle.text = event.itemRenderer.data.Id;
    itemSummary.text = event.itemRenderer.data.Summary;

    //assuming that the datagrid ID from the details panel is: detailsDatagrid 
    detailsDatagrid.dataProvider = event.itemRenderer.data.Properties;

    viewstack1.selectedChild = detailsPanel;
}

为了使其正常工作,您还必须向视图堆栈添加一个创建策略。

代码语言:javascript
复制
<mx:ViewStack id="viewstack1" height="243" creationPolicy="all">

这样,所有面板都将在创建视图堆栈时创建(默认情况下,它们仅在需要时创建)。这将确保您将拥有一个引用detailsPanelitemTitleitemSummary等。在面板可见之前。

票数 2
EN

Stack Overflow用户

发布于 2011-03-30 05:16:19

对我来说,最好的方法是使用数据绑定。只需引入额外的字段

代码语言:javascript
复制
[Bindable]
private var detailsDataProvider:ArrayCollection;

并在showDetails方法中填充详细信息。如果需要异步获取明细数据(例如,从服务器获取),您可以重置当前明细值,直到接收到数据:

代码语言:javascript
复制
detailsDataProvider = null;

然后用服务器数据填充它。

最后的更改在详细数据网格中:

代码语言:javascript
复制
<mx:DataGrid height="97" dataProvider="{detailsDataProvider}">

希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2011-04-26 20:41:10

这里的代码将解释'stackview‘的简单例子。使用此方法可以调用相同的面板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5465003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档