2009-08-31 79 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

相关问题