请教FLEX中一个简单的问题

qq529797991 2010-09-23 11:11:10
<fx:Script>
<![CDATA[

import mx.controls.Alert;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.Request;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

internal function init():void
{
products.GetAllProducts();
}

private function onFaultHandler(evt:FaultEvent):void
{
Alert.show("Fault", evt.fault.toString());
}

private function onSelectAllProductsHandler(evt:ResultEvent):void
{

Publics.Bind_DG(evt,dgProduct);
}
]]>
</fx:Script>




<mx:ViewStack width="100%" height="100%" id="viewStack">
<mx:Panel id="HelloWorldView" showEffect="{workspaceEffect}">
<mx:Text text="rapid-framework项目脚手架"/>
</mx:Panel>
<mx:Panel id="HelloView" showEffect="{workspaceEffect}">
<mx:Button label="hello"/>
</mx:Panel>
<mx:Panel id="PowerByView" showEffect="{workspaceEffect}">
<mx:Button label="Powered By Rapid-framework"/>
</mx:Panel>
<mx:Panel id="RapidHOME" showEffect="{workspaceEffect}">
<mx:Button label="http://www.rapid-framework.org.cn" />
</mx:Panel>

<mx:Panel id="DataGridView" showEffect="{workspaceEffect}" width="100%">
<mx:DataGrid id="dgProduct" width="100%" fontSize="14"/>
</mx:Panel>


</mx:ViewStack>


现在在Publics.Bind_DG(evt,dgProduct);方法中dgProduct获取不到。
如果把<mx:Panel id="DataGridView" showEffect="{workspaceEffect}" width="100%">
<mx:DataGrid id="dgProduct" width="100%" fontSize="14"/>
</mx:Panel>
拿到<mx:ViewStack></mx:ViewStack>就可以取到dgProduct对象。
现在想再<mx:ViewStack></mx:ViewStack>里面取到dgProduct,怎么办?


...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leemiki 2010-09-25
  • 打赏
  • 举报
回复
ViewStack的panel之间的通信相对麻烦一点,是一个平级传参数过程

需要通过父级容器中转

具体实现如下:

首先将一个panelA中的参数通过分发事件的形式传到父容器

然后父容器引用另一个子容器对象将参数传入即可


passself 2010-09-25
  • 打赏
  • 举报
回复
楼主你为什么把flex3和flex4一起用?这样的话,很多属性或者方法是受限制的,建议你把fx:Script标签改成mx:Script
qq529797991 2010-09-25
  • 打赏
  • 举报
回复
lieri111 说的事对的。
creationPolicy设置成ALL德话,如果项目大点话,都加载这样会很慢吧。
还有什么别的方法吗?
qq529797991 2010-09-24
  • 打赏
  • 举报
回复
对,现在把
<mx:Panel id="DataGridView" showEffect="{workspaceEffect}" width="100%">
<mx:DataGrid id="dgProduct" width="100%" fontSize="14"/>
</mx:Panel>
放到ViewStack 中第一个成
<mx:ViewStack width="100%" height="100%" id="viewStack">
<mx:Panel id="DataGridView" showEffect="{workspaceEffect}" width="100%">
<mx:DataGrid id="dgProduct" width="100%" fontSize="14"/>
</mx:Panel>
<mx:Panel id="HelloWorldView" showEffect="{workspaceEffect}">
<mx:Text text="rapid-framework项目脚手架"/>
</mx:Panel>
<mx:Panel id="HelloView" showEffect="{workspaceEffect}">
<mx:Button label="hello"/>
</mx:Panel>
<mx:Panel id="PowerByView" showEffect="{workspaceEffect}">
<mx:Button label="Powered By Rapid-framework"/>
</mx:Panel>
<mx:Panel id="RapidHOME" showEffect="{workspaceEffect}">
<mx:Button label="http://www.rapid-framework.org.cn" />
</mx:Panel>

可以直接取dgProduct进行操作,放到后面为什么就不行呢?
jilili403 2010-09-24
  • 打赏
  • 举报
回复
当你不设置creationPolicy属性时,默认为auto,就是只是加在当前用到的页面,最开始时也就是第一个页面
jilili403 2010-09-24
  • 打赏
  • 举报
回复
我觉得你的意思获得dgProduct为空;
所有的容器都有一个creationPolicy属性,当这个容器没有导航类组件(ViewStack,TabNavigater)的时候,都是一样的,当是导航类组件时,你把creationPolicy设置了"all"时,容器才会全部加载,这里你只要在最上面的容器加上creationPolicy="all"就行了,具体可以看下creationPolicy,这个属性
leemiki 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq529797991 的回复:]
<mx:ViewStack></mx:ViewStack>里面取到dgProduct
[/Quote]

在ViewStack的其他Panel里获取dgProduct对象??

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧