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

오빌, FileUpload의 코드를 게시 할 수 있습니까? 감사합니다. –

답변

1

알 수 있습니다. 다음과 같이 변경했습니다.

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

0
  • 당신은 arrFiles에 직접 fileUpload.arrFiles를 할당됩니다 여기에 코드입니다. 전자는 Array 또는 ArrayCollection입니까? 당신은해야 할 수도 있습니다 arrFiles = new ArrayCollection(fileUpload.arrFiles);

즉, 나는 굴곡 바인딩을 싫어하고 일반적으로 그것을 신뢰할 수 없기 때문에 그것을 피하십시오. 귀하의 경우, ItemRenderer를 구현하는 자체 AS3 구성 요소를 작성한 다음 변경 될 때 수동으로 repeater의 dataprovider를 할당합니다. 당신이 그런 식으로 행동한다면 당신은 행동에 대해 더 많은 통제권을 갖게 될 것입니다. 디버깅이 훨씬 쉬워졌습니다.

+0

도움 주셔서 감사합니다. 글렌. 내가 제안한대로 AS3 구성 요소를 작성해야하는 것처럼 보입니다. – user320691

관련 문제