Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-08-2011, 09:29   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Smile Itemrenderer im Datagrid umbauen

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 mxateField 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
flex5500 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
air, datagrid, datefield, flex, itemrenderer

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
Tab-Reihenfolge im ItemRenderer für DataGrid Szdnez Flex programmieren 6 15-06-2010 10:03
Eigener ItemRenderer für ein Datagrid Szdnez Flex programmieren 4 07-05-2010 15:47
Eigener itemRenderer für DataGrid stnswz Flex programmieren 20 14-08-2008 17:00
Datagrid - itemRenderer Problem eiklist Flex programmieren 2 19-09-2007 11:17
Referenz an dataGrid itemRenderer übergeben Ju2999 Flex allgemein 5 11-10-2006 17:38


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

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


Copyright ©1999 – 2012 Marc Thiele