2009-10-15 3 views
0

열 유형으로 확인란, 콤보 상자 및 텍스트 입력이있는 것과 같이 다른 유형의 열이있는 DataGrid가 있습니다.DataGrid에 링크가 있고 Flex에서 링크를 클릭하면 창을 팝업하는 방법은 무엇입니까?

이제 열 유형 중 하나를 링크에 표시하고 "보기"레이블을 지정합니다. 해당 열의 모든 행은 동일한 레이블 "보기"와 연결되어 있으며이를 클릭하면 팝업 창이 열립니다. 나는 데이터 그리드에서 링크를 가지고하는 방법을 알고하지 않았다

<?xml version="1.0" encoding="utf-8"?> 
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%"> 
<mx:Script> 
    <![CDATA[ 

     [Bindable] 
     private var defectDetails:ArrayCollection = new ArrayCollection([ ]); 

     private function addDefect():void{ 
      defectDG.dataProvider.addItem(
       {CommentHistory:"View"} 
      ); 
      defectDG.height += 30; 
     } 

     private function defectCommentsPopUp():void{ 
      var helpWindow:defectCommentsLookUp=defectCommentsLookUp(PopUpManager.createPopUp(this, defectCommentsLookUp, true)); 
     } 
    ]]> 
</mx:Script> 

<mx:DataGrid id="defectDG" dataProvider="{defectDetails}" variableRowHeight="true" width="100%" height="75" > 

<mx:columns> 

    <mx:DataGridColumn headerText="Select" dataField="Select" itemRenderer="mx.controls.CheckBox" width="50" textAlign="center" /> 

    <mx:DataGridColumn headerText="Defect Id" dataField="DefectId" itemRenderer="mx.controls.TextInput" textAlign="center"/> 

    <mx:DataGridColumn headerText="Status" dataField="Status" itemRenderer="mx.controls.ComboBox" textAlign="center"/> 

    <mx:DataGridColumn headerText="Severity" dataField="Severity" itemRenderer="mx.controls.ComboBox" textAlign="center" />  

    <mx:DataGridColumn headerText="Comment History" dataField="CommentHistory" itemRenderer="mx.controls.Text" textAlign="center" headerWordWrap="true" /> 

</mx:columns> 
</mx:DataGrid> 

<mx:Button styleName="buttonStyle" label="Add New Defect" click="addDefect()"/> 

</mx:VBox> 

:

내 코드입니다. 그래서 "보기"레이블을 표시하려면 텍스트 컨트롤을 사용. 지금 DataGrid에서이 항목, "보기"를 클릭하면 팝업 기능, 즉 defectCommentsPopUp()이 호출되기를 원합니다.

어떻게 하시겠습니까?

답변

2

commentHistory에 값을 지정하면 행을 식별하는 데 도움이됩니다.

private function onViewClick(item:Object):void 
{ 
    //item contains the commentHistory value of the clicked row. 
    showPopUp(item); 
} 
+0

와트가 outerDocument입니다 : 스크립트의

<mx:DataGridColumn dataField="commentHistory"> <mx:itemRenderer> <mx:Component> <mx:Label text="View" click="outerDocument.onViewClick(data)"/> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> 

? – Angeline

+0

mx : Component 태그를 사용하여 itemRenderer에 드롭을 선언하면 'this' 키워드를 사용하여 원래 클래스의 메소드를 참조 할 수 없습니다. 이는 컴포넌트 태그 내에서 'this'가 컴포넌트의 루트 (이 경우 Label)를 참조하기 때문입니다. 구성 요소 태그는 이와 같은 간단한 경우에 다른 mxml 파일을 작성하지 않도록하는 간단한 방법입니다. 'outerDocument'는 컴포넌트를 포함하고있는 원래의 mxml 문서를 참조하는 변수입니다. – Amarghosh

+0

좋습니다. 이 코드가있는 mxml 파일은 DefectEntryVerification입니다. 하지만''오류를 보여줍니다 :'1061 : 정적 유형 Class를 가진 참조를 통해 onViewClick 가능성이있는 정의되지 않은 메소드 호출. ' – Angeline

관련 문제