| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: May 2011
Beiträge: 10
|
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> |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: May 2011
Beiträge: 10
|
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. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Datagrid itemEditor nach Tab/Fensterwechsel wieder aktiv | Herr Lehmann | Flex programmieren | 7 | 05-01-2011 14:18 |
| dataGrid: ComboBox als itemEditor mit dataProvider | phase | Flex programmieren | 2 | 21-01-2009 00:03 |
| DataGrid Daten Auslesen | butterbrot | Komponenten und SmartClips | 1 | 10-03-2004 11:27 |