2009-08-31 78 views
0

我有一個按鈕的datagrid列,打開一個模式對話框允許用戶上傳多個文件。在下面的代碼中,browseAndUpload()方法就是這樣做的。當用戶完成上傳文件並關閉上傳框時,會調用closeUpload()方法。我知道上傳的文件正被複制到arrFiles中。是否有可能將數組存儲在Flex中的DataGridColumn中?

我遇到的問題是中繼器不會在arrFiles中顯示文件。下面是代碼:

<mx:DataGridColumn id="dgcUpload" width="42" headerText="Uploaded Files" 
    editable="false"> 
    <mx:itemRenderer> 
     <mx:Component> 
      <mx:VBox> 
       <mx:Script> 
        <![CDATA[ 
         [Bindable]public var arrFiles:ArrayCollection = new ArrayCollection(); 
         public var fileUpload:FileUpload = new FileUpload(); 

         private function browseAndUpload(event:MouseEvent):void 
         { 
          fileUpload = FileUpload(PopUpManager.createPopUp(this, FileUpload, true)); 

          fileUpload.addEventListener(CloseEvent.CLOSE, closeUpload); 
          fileUpload["btnClose"].addEventListener("click", closeUpload); 
         } 

         private function closeUpload(event:Event):void 
         { 
          arrFiles = fileUpload.arrFiles; 
         } 
        ]]> 
       </mx:Script> 
       <mx:HBox paddingLeft="3" paddingRight="3"> 
        <mx:Button width="36" label="..." click="browseAndUpload(event)"/> 
       </mx:HBox> 
       <mx:Repeater id="rpFiles" dataProvider="{arrFiles}"> 
        <mx:Label text="{FileVO(rpFiles.currentItem).name}"/> 
       </mx:Repeater> 
      </mx:VBox> 
     </mx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 

預先感謝您的任何見解,

奧維

+0

Orville, 您可以發佈FileUpload的代碼嗎? 謝謝。 – 2009-08-31 21:58:32

回答

1

Got it!我做了以下更改:

private function closeUpload(event:Event):void 
{ 
    arrFiles = fileUpload.arrFiles; 
    rpFiles.dataProvider = arrFiles; 
} 


<mx:Repeater id="rpFiles"> 
    <mx:Label text="{FileVO(rpFiles.currentItem).name}"/> 
</mx:Repeater> 
+1

不客氣。 – Glenn 2009-09-01 04:36:36

0
  • 您直接分配到fileUpload.arrFilesarrFiles。前者是Array還是ArrayCollection?你可能需要做arrFiles = new ArrayCollection(fileUpload.arrFiles);

這就是說,我討厭flex綁定,通常避免它,因爲它可能是不可靠的。在你的情況下,我會編寫我自己的AS3組件來實現ItemRenderer,然後在改變時手動分配轉發器的數據提供者。如果你這樣做,你會對這種行爲有更多的控制。而且更容易的時間調試。

+0

謝謝你的幫助Glenn。看起來我可能必須按照你的建議編寫一個AS3組件。 – user320691 2009-09-01 15:32:08

相關問題