Christin85
Grünschnabel
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
RadioButtonRenderer
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:
<?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:
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;
}
}
}
}