Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-06-2011, 12:22   #1 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 10
Question DataGrid -> itemEditor -> Dropdownlist = Wie gewählte Daten auslesen?

Hallo,

Ich habe eine ArrayCollection. Diese ArrayCollection lade ich in ein Datagrid, um gewisse werte in einer Spalte zu ändern.

Für das Ändern der Werte habe ich mir ein ItemRenderer erzeugt und über rendererIsEditor="true" gleich dem ItemEditor gesetzt. Der Itemrenderer ist eine DropDownList die sich die Werte aus einem Callresponder holt.

Das ganze funktioniert sehr gut. Das Datagrid wird erstellt. Die Werte werden in der DropDownlist angezeigt und ich kann sie auch auswählen.

Jetzt möchte ich aber das der ausgewählte wert aus der DropDownList wieder in die ArrayCollection geschrieben wird. So das ich die so komplettierte Arraycollection weiterwervewnden kann.

Vorher hatte ich die Lösung die DataGridColumn einfach zu editieren. Das hat sehr gut geklappt. Ist mir aber nicht userfreundlich genug, da die Werte relativ Lang sind und auch über eine DropDownList abegrufen werden können.

Jetzt die eigentliche Frage. Wie schaffe ich es, dass die Daten aus der DropDownList genauso in die ArrayCollection übernommen werden als hätte ich sie einfach per Texteingabe editiert?


Hier mal der Auszug aus der Applicatioin

Code:
[Bindable] private var initDG:ArrayCollection;


// wilder Code um die initDG:ArrayCollection zu füllen \\


	<mx:DataGrid id="adg2" left="20" right="20" top="210" bottom="45" contentBackgroundColor="#A7A7A7"
				creationComplete="adg2_creationCompleteHandler(event)" dataProvider="{initDG}"
				editable="true" fontSize="15" fontWeight="bold">
		<mx:columns>
			<mx:DataGridColumn width="30" dataField="0" headerText="ID" editable="false" backgroundColor="#999999"/>
			<mx:DataGridColumn width="130" dataField="7" headerText="WT_ID" editable="true" backgroundColor="#999999"
							   rendererIsEditor="true" itemRenderer="ItemRendererDDList" editorDataField="selected"/>
			<mx:DataGridColumn dataField="1" headerText="TYP" editable="false"  backgroundColor="#999999"/>
			<mx:DataGridColumn width="100" dataField="2" headerText="M1" editable="false" backgroundColor="#999999"/>
			<mx:DataGridColumn width="100" dataField="3" headerText="M2" editable="false" backgroundColor="#999999"/>
			<mx:DataGridColumn width="100" dataField="4" headerText="M3" editable="false" backgroundColor="#999999"/>
			<mx:DataGridColumn width="100" dataField="5" headerText="M4" editable="false" backgroundColor="#999999"/>
			<mx:DataGridColumn width="100" dataField="6" headerText="M5" editable="false" backgroundColor="#999999"/>
			<mx:DataGridColumn width="130" dataField="8" headerText="Pruefer" editable="false" backgroundColor="#999999"/>
		</mx:columns>
	</mx:DataGrid>

und hier der Code von dem ItemRenderer (ItemRendererDDList)
Code:
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
						  xmlns:s="library://ns.adobe.com/flex/spark"
						  xmlns:mx="library://ns.adobe.com/flex/mx"
						  xmlns:prozessdatenservice="services.prozessdatenservice.*"
						  width="130" height="25" contentBackgroundColor="#999999"
						  creationComplete="getProzessdaten()" focusEnabled="true">
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			import spark.events.IndexChangeEvent;
			
			protected function getProzessdaten():void
			{
				getProzessdatenResult.token = prozessdatenService.getProzessdaten();
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<s:CallResponder id="getProzessdatenResult"/>
		<prozessdatenservice:ProzessdatenService id="prozessdatenService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
	</fx:Declarations>
	
	
	<s:DropDownList id="dropDownListItemRenderer" width="100%" height="100%"
					contentBackgroundColor="#999999"
					dataProvider="{getProzessdatenResult.lastResult}" labelField="WT_ID"
					prompt="WT wählen"/>
	
</s:MXDataGridItemRenderer>
CyTrond ist offline   Mit Zitat antworten
Alt 22-06-2011, 16:51   #2 (permalink)
Neuer User
 
Registriert seit: May 2011
Beiträge: 10
Lightbulb Lösung

OK ich habs selber gelöst

in der itemrenderer File fehlte noch ein
override public function set data(value:Object):void

und eine public variable um die daten zu übergeben. Zusätzlich habe ich noch das close event der DropDownList genommen um die Daten in die Variable zu schreiben.


hier der neue Code

Code:
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
						  xmlns:s="library://ns.adobe.com/flex/spark"
						  xmlns:mx="library://ns.adobe.com/flex/mx"
						  xmlns:prozessdatenservice="services.prozessdatenservice.*"
						  width="130" height="25" contentBackgroundColor="#999999"
						  creationComplete="getProzessdaten()" focusEnabled="true">
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;			
			import spark.events.DropDownEvent;
			import spark.events.IndexChangeEvent;
			
			public var newValue:String;
			
			override public function set data(value:Object):void
			{
				super.data = value;
				newValue = value.guapo;
			}
			
			protected function getProzessdaten():void
			{
				getProzessdatenResult.token = prozessdatenService.getProzessdaten();
			}

			
			protected function dropDownListItemRenderer_closeHandler(event:DropDownEvent):void
			{
				newValue = dropDownListItemRenderer.selectedItem.WT_ID;
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<s:CallResponder id="getProzessdatenResult"/>
		<prozessdatenservice:ProzessdatenService id="prozessdatenService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"
												 showBusyCursor="true"/>
	</fx:Declarations>
	
	<s:DropDownList id="dropDownListItemRenderer" width="100%" height="100%"
					contentBackgroundColor="#999999"
					dataProvider="{getProzessdatenResult.lastResult}" labelField="WT_ID"
					prompt="WT wählen"
					close="dropDownListItemRenderer_closeHandler(event)"/>
	
</s:MXDataGridItemRenderer>

Im DataGridColumn des DataGrids noch editorDataField="newValue" eingesetzt und es läuft.
CyTrond ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datagrid itemEditor nach Tab/Fensterwechsel wieder aktiv Herr Lehmann Flex programmieren 7 05-01-2011 15:18
dataGrid: ComboBox als itemEditor mit dataProvider phase Flex programmieren 2 21-01-2009 01:03
DataGrid Daten Auslesen butterbrot Komponenten und SmartClips 1 10-03-2004 12:27


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele