0

この問題は、データグリッド内のアイテムをクリックすると、テキスト領域にアイテムの値が表示されますが、ここではコンポーネントが分離されているため、イベントをディスパッチする必要があると要約できます。

My mxml component file :

<?xml version="1.0" encoding="utf-8"?>
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml" itemClick="itemClickEvent(event);"  creationComplete="init()">

<mx:Metadata>
  [Event(name="IdSelected", type="one.IdEvent")]
</mx:Metadata>

<mx:Script>
<![CDATA[     import genericReport.*;
              import crewUtilization.*;
              import utils.*;
              import studies.*;
              import mx.rpc.events.FaultEvent;
              import mx.rpc.events.ResultEvent;
              import mx.controls.Alert;
              import mx.events.ListEvent;


      private function itemClickEvent(event:ListEvent):void 
      {
          var _study:Object=event.currentTarget.selectedItem.study;
          dispatchEvent(new IDEvent(_ID));     
      }


]]>

</mx:Script>

<mx:columns>

 <mx:DataGridColumn dataField="name" />
 <mx:DataGridColumn dataField="userId" />
</mx:columns>
</mx:DataGrid>

/////////////////////////////////////////////// /////////////

これは私のメイン MXML アプリケーション ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="*">
<mx:TitleWindow label="Scenario Creation" xmlns:mx="http://www.adobe.com/2006/mxml"
 xmlns:ns1="ccCreation.*">

<mx:Label text="CC CREATION" width="100%" />
<mx:VBox width="100 %" styleName="scenariovboxStyle">

<custom:studySelector id="dg" />
</mx:VBox>
</mx:TitleWindow>   
</mx:Application>
4

1 に答える 1

0

studyIdは、studyIdを参照するdataGridよりもdataGridを参照する方が良いと思います。これをメインのmxmlに追加できます。

<mx:TextArea id="studyId" text="{dataGrid.selectedItem.Study}"/>

TextArea.textはDataGrid.selectedItemのプロパティ変更イベントに応答するため、これは機能するはずです。したがって、選択が変更されるたびに変更されます。

編集:イベントのディスパッチ:

コード内の任意の場所からイベントをディスパッチでき、リスナーはそのイベントをリッスンできます。例えば:

<mypackage:MyComponent>
...
private function foo():void
{
    dispatchEvent(new MouseEvent(MouseEvent.CLICK)); // Dispatches a mouse event whenever foo is called.
}

これで、そのイベントを聞くことができます。

<mypackage:MyComponent id="myComponent"/>
...
myComponent.addEventListener(MouseEvent.CLICK, mouseClickHandler);

private function mouseClickHandler(event:MouseEvent):void
{
    ... // code to handle that event here.
}

お役に立てれば!

<mx:MainComponent creationComplete="init()" ...>
    ...
    private function init(event:Event):void
    {
        ...
        customComponent.addEventListener(StudyEvent.STUDYSELECTED, studySelectedListener);
        ...
    }

    private function studySelectedListener(event:StudyEvent):void
    {
        studyid.text = event.study.studyId; // or wherever you store your studyId value
        ...
    }
    ...
<mx:MainComponent/>

何が起こるかというと、StudyEvent.STUDYSELECTEDイベントがcustomComponentから発生するたびに、それがメイン関数によってキャッチされ、studySelectedListenerが呼び出されます。

于 2009-06-09T20:37:42.073 に答える