본문 바로가기

컴터/Flash & Flex

itemrenderer 안의 button 에 이벤트 주기, 파일 다운로드시 주의사항

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
http://cafe.naver.com/ArticleRead.nhn?clubid=10833316&page=5&searchtype=1&query=filereference&searchdate=all&articlemedia=0&sortby=date&articleid=1438


<mx:DataGrid id="dg" width="95%" height="341" fontSize="12" textAlign="center">
            <mx:columns>
                <mx:DataGridColumn headerText="파일명" dataField="name" textAlign="left" />
                <mx:DataGridColumn headerText="사이즈(kb)" dataField="size" width="80" />
                <mx:DataGridColumn headerText="수정날짜" dataField="mtime" width="170" />
                <mx:DataGridColumn headerText="다운로드" width="70">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:VBox width="95%" paddingLeft="5">                        
                                <mx:Script>
                                    <![CDATA[
                                        /*Download*/
                                        import mx.controls.Alert;
                                        import flash.net.FileReference;
                                        
                                        private var fr:FileReference;
                                        private function dwn():void {
                                            fr = new FileReference();
                                           //scope 가 끝나는 시점에는 upload 나 download 를 취소한다고한다.
                                           //그래서 지역변수는 안되고, 인스턴스 변수로 선언해야 한다.
                                            var request:URLRequest = new URLRequest();
                                            var fileName:String=parentDocument.dg.selectedItem.name;
                                            //파일명가져오기..parentDocument 는 itemrenderer에서 볼때 datagrid가 상위에 있는 것이다.                                                                                        
                                            request.url = "./file/" + fileName;
                                            fr.download(request, fileName);                                            
                                        }
                                    ]]>
                                </mx:Script>
                                <mx:Button label="Down" borderColor="#ffffff" fillColors="#ffffff" focusRoundedCorners="0" color="#ffffff"
                                    disabledColor="#FFFFFF" click="dwn();"/>
                                    <!--itemrenderer 안의 button안에서 이벤트를 발생시키기위해 component 안의 vbox 안에 script를 재정의 했다..-->
                            </mx:VBox>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>            
        </mx:DataGrid>