2014-09-23 81 views
-1

我完全在Flex編程中更新鮮, 我有一個FileUploadPanel.mxml,其中包含上傳,刪除和查看一個文件的功能..現在我需要修改應用程序以適應多個附件設施,所以我創建了另一個面板,即MultiFileUpload.mxml,它具有以對象列表的形式獲取所有附件的功能,並且對於每個對象ID,我需要調用以前的文件上載面板,每一件事情是優良的工作,但是當我訪問FileUpload.mxml的按鈕和標籤它拋出錯誤:如何從另一個mxml文件訪問一個mxml文件的按鈕和標籤

1009- cannot access property and method of null object reference. 

code FileUploadPanel.mxml 



<?xml version="1.0" encoding="utf-8"?> 
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="492" height="46" > 
     <mx:Label x="0" y="4" text="File Attachment:"/> 
     <mx:Button x="93.5" y="2" label="Browse" id="btnBrowseView" click="__onBrowse();" enabled="true" width="67"/> 
     <mx:Text x="264.5" y="4" width="100%" id="lbUploadFile" height="18 " /> 
     <mx:Button x="165" y="2" label="Upload" id="btnUpload" enabled="true" click="reserveAttachment();" width="67"/> 
     <mx:Text x="10" y="25" width="100%" height="18" id="__status__" fontWeight="bold" color="#023AF1"/> 
     <mx:Script> 
      <![CDATA[ 


     public function SetAttachmentID(anAttachmentID: Number): void 
      {    
       this.AttachmentID = anAttachmentID; 
       lbUploadFile.text = ""; //here i am getting error 
       __status__.text = ""; 
       if (AttachmentID != -1) 
       { 
        m_data = new DocumentsAdt(); 
        m_data.ConnectionIndex = ConnectionIndex; 
        m_data.OnLoadData = this.OnDoxLoaded; 
        m_data.LoadFromWebService(AttachmentID); 

        btnBrowseView.label = "View"; 
        btnUpload.label = "Delete"; 
        btnUpload.enabled = true; 
        btnUpload.visible = true; 
       } 
       else 
       { 
        btnBrowseView.label = "Browse"; 
        btnUpload.visible = false; 
        btnUpload.label = "Upload"; 
        btnUpload.enabled = false; 
        Init(); 
       } 
      } 
      </mx:Script> 
</mx:Canvas> 

代碼MuliFileUpload.mxml

<?xml version="1.0" encoding="utf-8"?> 

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:BoycePanels="BoycePanels.*" xmlns:ns1="com.flextoolbox.controls.*" xmlns:ns2="com.adobe.flex.extras.controls.*" xmlns:ns3="BoycePanels.*"> 



    <mx:Script> 
     <![CDATA[ 



      import Adt.Attachments.DocumentsAdt; 

      import com.boycepensions.DocumentsService.DocumentsService; 
      import com.boycepensions.DocumentsService.GetDocumentsRecordResultEvent; 

      import mx.collections.ArrayCollection; 
      private var m_data: DocumentsAdt = null; 
      import mx.rpc.events.FaultEvent; 
      import BoycePanels.FileUploadPanel; 
      import mx.controls.Alert; 

      public var ConnectionIndex: int = new int(0); 
      public var AttachmentID: Number = new Number(-1); 
      public var acDocList:ArrayCollection=null; 
      public function Init():void 
      { 
       getDocs_Test(); 
      } 

      public function getDocs_Test():void  
      { 
       blah..blah..blah.. 
      } 
      public function OnGetDocumentsRecord(event:GetDocumentsRecordResultEvent): void 
      { 
       var acDocList:ArrayCollection=new ArrayCollection(); 
       var m_data:DocumentsAdt=new DocumentsAdt(); 
       if (!CheckResult(event.result))   
        return;   
       else 
       { 
        acDocList=m_data.LoadDocumentsFromXML(event.result);   
        for each(var obj:DocumentsAdt in acDocList) 
        { 
         var pnl:FileUploadPanel=new FileUploadPanel(); 
         //pnl.OnReserveAttachmentDone=OnReserveAttachment; 
         pnl.Init(); 
         pnl.SetAttachmentID(obj.Document_ID); //here it is throwing error 
        } 
       } 

      } 

請建議,我已經花了幾天時間就可以了..

回答

0

您嘗試當它尚未初始化訪問lbUploadFile。所以如果你想在舞臺上展示FileUploadPanel,可以在調用SetAttachmentID函數之前將它添加到舞臺上,就像這樣。

var pnl:FileUploadPanel=new FileUploadPanel(); 
this.addChild(pnl);//add it to where you want 

如果pnl不需要在舞臺上顯示,請刪除訪問孩子的行。

+0

謝謝潘!有效!! – Asmi 2014-09-23 10:45:23

相關問題