tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
2097
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Christin85 Christin85 ist offline Grünschnabel
    Registriert seit
    Jun 2009
    Beiträge
    3
    Hallo zusammen,

    ich hoffe ich bin an dieser Stelle hier richtig und mir kann jemand helfen.

    Ich erstelle in einer mxml-Datei komplett mittels Actionscript ein dynamisches Datagrid, welches sich die Daten aus einer XML-Struktur holt. In diesem Datagrid sind Radiobuttons enthalten, welche mit Hilfe eines Itemrenderer erzeugt und anhand der Daten aus dem XML vorbelegt werden.
    Schwierigkeit: Die Radiobuttons sollen splatenweise gruppiert werden, d.h. pro Spalte kann ein Radiobutton selektiert werden.
    Mir ist bewusst, dass das mit der RadioButtonGroup zusammenhängt. Im Internet haben ich gelesen, dass ich die Buttongroup im Hauuptdokument erstellen muss und dann im Renderer darauf zugreifen und diese zuweisen sollte. Bei mir sieht es derzeit wie folgt aus. Das Grid wird erstellt und pro Spalte ist ein Radiobutton vorselektiert. Nun kann ich aber mit nur "1 Punkt" zwischen allen anderen nicht selektierten Buttons spaltenübergreifend hin- und herspringen und die vorselektierten Buttons bleiben völlig unberührt.

    Weiß vielleicht jemand Rat und kann mir bei der Lösung des Problems helfen? Hab schon eine ganze Menge probiert, aber die 100%ig richtige Lösung habe ich leider noch nicht zusammengebaut bekommen.

    Schonmal vielen Dank für eure Hilfe,
    Christin

    MXML-Datei
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" >
    <mx:Script>
        <![CDATA[
            import mx.controls.RadioButtonGroup;
            import mx.controls.RadioButton;
            import mx.collections.XMLListCollection;
            import mx.collections.ArrayCollection;
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.controls.DataGrid;
            
            public var grid_stückliste : DataGrid = new DataGrid();
            public var column_liste : DataGridColumn;
            public var column: DataGridColumn;
            public var length:int;
            public var newColumns_stückliste:Array = new Array();
            public var groups_stückliste:Array = new Array();
            
            public var  xml_stückliste:XML = new XML(       
            <stückliste>
                <info anzahl="3" generator1="Generator XY" generator2="Generator YZ" generator3="Generator VW"/>
                <liste text="Stückliste1 | Pyro1" generator1="true"  generator2="false"  generator3="true"/>
                <liste text="Stückliste1 | Pyro2" generator1="false" generator2="false" generator3="false"/>
                <liste text="Stückliste2 | Pyro1" generator1="false" generator2="true" generator3="false"/>
                <liste text="Stückliste2 | Pyro2" generator1="false" generator2="false" generator3="false"/>
            </stückliste>);
            
            private function init() : void{
     
                grid_stückliste.dataProvider= xml_stückliste.liste;
                grid_stückliste.percentWidth=75;
                column_liste = new DataGridColumn();
                column_liste.headerText ="";
                column_liste.dataField ="@text"
                newColumns_stückliste.push(column_liste);
                length = xml_stückliste.info.@anzahl;
                for ( var i:int =1;i<=length;i++){
                    column = new DataGridColumn();
                    column.dataField = "@generator"+i;
                    var RadioRenderer:ClassFactory = new ClassFactory(RadioButtonRenderer);
                    column.itemRenderer= RadioRenderer;
                    column.setStyle("textAlign", "center");
                    newColumns_stückliste.push(column);
                }       
                grid_stückliste.columns = newColumns_stückliste;
                grid_stückliste.showHeaders = false;
                grid_stückliste.y =63;
     
                addChild(grid_stückliste);
                    
            } 
            
        ]]>
    </mx:Script>
        
    </mx:Application>

    RadioButtonRenderer
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
     
    package
    {
        import mx.controls.RadioButton;
        
        public class RadioButtonRenderer extends RadioButton
        {
            public function RadioButtonRenderer()
            {
                super();
            }
            
            override protected function createChildren():void
            {
                super.createChildren();
            }
     
            override protected function commitProperties():void
            {
                super.commitProperties();
                if (this.data)
                {
                    var i:int  = this.listData.columnIndex;
                    this.group = this.parentApplication.groups_stückliste[i];
                    this.selected = this.listData.label == "true"   
                }
                else
                {
                    this.selected = false;
                }
            }
     
        }
    }
     

  2. #2
    Christin85 Christin85 ist offline Grünschnabel
    Registriert seit
    Jun 2009
    Beiträge
    3
    Guten Morgen,

    ich hab es jetzt soweit geschafft, meinen RadioButtonRenderer anzupassen, dass die RadioButtons spaltenweise gruppiert sind (Durchklicken funktioniert).
    Nur leider greift jetzt die Vorbelegung nicht mehr ...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    package
    {
        import mx.controls.RadioButton;
        
        public class RadioButtonRenderer extends RadioButton
        {
            public function RadioButtonRenderer()
            {
                super();
            }
            
            override protected function createChildren():void
            {
                super.createChildren();
            }
     
            override protected function commitProperties():void
            {
                var i:int = this.listData.columnIndex;
                this.group = this.parentApplication.groups_stückliste[i];
                if (this.data)
                {   
                        this.selected = this.listData.label == "true";  
                }
                else
                {
                    this.selected = false;
                }
            }
     
        }
    }

    Weiß denn niemand Rat?
     

  3. #3
    Christin85 Christin85 ist offline Grünschnabel
    Registriert seit
    Jun 2009
    Beiträge
    3
    HIer die Lösung ...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    package
    {
        import flash.events.MouseEvent;
        import mx.controls.RadioButton;
        import mx.controls.listClasses.BaseListData;
        import mx.controls.listClasses.IDropInListItemRenderer;
        
        public class RadioButtonRenderer_Liste extends RadioButton implements IDropInListItemRenderer
        {
            private var _listData:BaseListData;
            private var _data:Object;
            
            public function RadioButtonRenderer_Liste()
            {
                super();
            }
            
            override public function get listData():BaseListData
            {
                return this._listData;
            }
     
            override public function set listData(value:BaseListData):void
            {
                this._listData = value;
                invalidateProperties();
            }
            
            override public function set data( value:Object ) : void 
            { 
                _data = value; 
                 
                if( value ) 
                { 
                    this.selected=this.listData.label=="true";
                }
            }
            
            override protected function createChildren():void
            {
                super.createChildren();
            }
     
            override protected function commitProperties():void
            {
                var i:int = this.listData.columnIndex;
                this.group = this.parentApplication.groups_stückliste[i];
     
            }
     
        }
    }
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 11.08.10, 13:22
  2. Radiobutton Problem
    Von DonMarkeZ im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 05.04.06, 17:59
  3. Radiobutton und if = Problem!?
    Von xtreme-nix-raffer im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 27.05.05, 14:17
  4. RadioButtonGroup definieren
    Von Ixupi im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 07.10.04, 13:30
  5. Problem mit Radiobutton
    Von derZwerch im Forum PHP
    Antworten: 6
    Letzter Beitrag: 23.02.04, 15:09