今天遇到了麻烦,我企图在两个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); }