当前位置: 代码迷 >> Flex >> Flex中NavigatorContent的通讯以及itemRenderer对dataGridColumn的访问
  详细解决方案

Flex中NavigatorContent的通讯以及itemRenderer对dataGridColumn的访问

热度:7944   发布时间:2013-02-26 00:00:00.0
Flex中NavigatorContent的通信以及itemRenderer对dataGridColumn的访问

今天遇到了麻烦,我企图在两个NavigatorContente中传送数据,刚开始的思路是设置iparent属性,搞的一团乱,而且有个问题解决不了,就是如何在我点击dataGridCloumn中的查看按钮时,实时的传送数据。后来想,既然两个NavigatorContent在一个ViewStack中,为什么不用ViewStack直接控制。便取消掉iparent设置。但是仍有一个问题,就是经常在从dayReportView中取数据放到dayReportDetail中时会报错,原因是dayReportDetail还没有被创建。如果在dayReportDetail的creationComplete函数中放数据,那么在只能在刚创建时放置一次。尝试了很多办法,后来想到了一个办法,就是监听ViewStack的Change事件。dayReportDetail的creationComplete代码如下:

protected function dayReportDetail_creationCompleteHandler(event:FlexEvent):void			{				dayReportDetail.addEventListener("goback",gobackHandler);								dayReportDetail.dayReportId = dayReportView.dayReportId;			}

ViewStack中的change响应代码:

protected function vsIndex_changeHandler(event:IndexChangedEvent):void			{				if(vsIndex.selectedIndex ==2 &&dayReportDetail)				{					dayReportDetail.dayReportId = dayReportView.dayReportId;					Alert.show(dayReportDetail.dayReportId.toString());				}							}

这些解决了。还有一个问题,就是如何在点击查看按钮时,取得其所在的dataGridColumn的id:

	<mx:DataGridColumn headerText="日报明细" dataField="desc" id="dayItem">						<mx:itemRenderer>							<fx:Component>								<mx:LinkButton label="查看" textAlign="left" click="parentDocument.linkbutton1_clickHandler(data.dayReportId)">								</mx:LinkButton>							</fx:Component>						</mx:itemRenderer>					</mx:DataGridColumn>
这里改写了button的click传送的参数。注意:参数里data是指该按钮所在的行记录

click响应事件代码:

public function linkbutton1_clickHandler(id:int):void{				this.dayReportId = id;				var ditemObject:Event = new Event("dayReportDetail");				this.dispatchEvent(ditemObject);							}