Hi Leute,
und zwar geht es hier um einen Datumsrenderer. Mit google habe ich hier diesen Codeschnipsel gefunden und etwas angepasst:
PHP-Code:
<mx:DateField xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
implements="mx.controls.listClasses.IListItemRenderer"
focusIn="open()" click="datefield1_clickHandler(event)">
<fx:Script>
<![CDATA[
override public function set data(value:Object):void{
if(listData){
var newDate:Date;
if (value is String){
newDate = new Date(Date.parse(data as String));
super.data=newDate;
}
else if (value is Date){
super.data=value as Date;
}
}
}
protected function datefield1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
}
]]>
</fx:Script>
</mx:DateField>
wobei es doch etwas ungewöhnlich ist das der erste Tag die zu beinhaltende Kompononente ist. Ich hab bei dem hier das Problem dass ich bei einem Funktionsaufruf (datefield1_clickHandler) nicht die ID der Komponente ansprechen kann. Normalerweise wäre es mir lieber wenn der Tag mit
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.co/mxml/2009"
....
....
anfangen würde.
und daher habe ich versucht den Itemrenderer etwas umzubauen:
PHP-Code:
<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:itemRenderer="tabbarContent.datagridUsers.popup.itemRenderer.*"
width="100%" height="100%" focusEnabled="true" autoDrawBackground="true">
<fx:Script>
<![CDATA[
[Bindable]protected var date:String;
override public function set data(value:Object):void
{
date = value[dataGridListData.dataField];
}
]]>
</fx:Script>
<itemRenderer:DateEditorComponent horizontalAlign="center" left="0" top="0" right="0" bottom="0" />
</s:MXDataGridItemRenderer>
die DateEditorComponent.as sieht wie folgt aus:
PHP-Code:
package tabbarContent.datagridUsers.popup.itemRenderer
{
/**
* @author cvarzar
*/
import mx.containers.HBox;
import mx.controls.DateField;
import mx.controls.listClasses.IListItemRenderer;
public class DateEditorComponent extends HBox
{
private var _value:int;
public function DateEditorComponent()
{
super();
}
public function get value():int {
return _value;
}
override public function set data(value:Object):void{
//if(listData){
var newDate:Date;
if (value is String){
newDate = new Date(Date.parse(data as String));
super.data=newDate;
}
else if (value is Date){
super.data=value as Date;
}
var datum:DateField = new DateField();
datum.data = newDate;
addElement(datum);
//}
}
}
}
Die Werte die hier verarbeitet sind kann man erst mal ein wenig außer acht lassen. Dabei kommt aus der Datenbank mit Hilfe eines ValueObjects für die betreffende Spalte ein Wert wie 01.02.2011, welcher mit dem funktionierendem mx

ateField korrekt dargestellt wird.
Wenn ich das Beispiel so umbaue will mir das Datagrid weder etwas anzeigen noch etwas darstellen...
weiß da jemand Rat?
Viele Grüße
Christian