Frage

Das Problem kann wie folgt zusammengefasst werden, wenn ein Element in Datagrid klicken, zeigt der Textbereich den Wert des Artikels, aber hier sind die compoents getrennt sind und daher Ereignisse ausgelöst werden müssen.

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>

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

Das ist meine Haupt MXML-Anwendungsdatei:

<?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>
War es hilfreich?

Lösung

ich denke, es könnte besser sein für studyId an das Datagrid zu beziehen, anstatt das Datagrid zu studyId bezieht. Sie können diese zu Ihrem Haupt mxml hinzufügen:

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

Das sollte funktionieren, weil TextArea.text auf die Eigenschaft veränderten Fall DataGrid.selectedItem reagieren, so wird es immer dann, wenn die Auswahl ändert.

EDIT: Dispatching Ereignisse:

Sie können einen -Ereignis von jedem Ort in Ihrem Code und Hörer in der Lage, dieses Ereignis zu hören in. Zum Beispiel:

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

Jetzt können Sie für dieses Ereignis hören:

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

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

Hope, das hilft!

<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/>

Was passiert, ist, wenn ein StudyEvent.STUDYSELECTED Ereignis aus Ihrer Custom gefeuert wird, wird es durch Ihre Hauptfunktion gefangen werden und studySelectedListener aufgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top