Stellen Sie die datagridcolumn des ItemRenderer dynamisch
-
05-07-2019 - |
Frage
Ich habe dieses Datagrid:
<mx:DataGrid id="myDataGrid">
<mx:columns>
<mx:DataGridColumn dataField="colA" headerText="Column A:" width="40"
headerRenderer="path.customComponents.VerticalHeader"
itemRenderer="path.customComponents.CustomDataGridItemRenderer" />
</mx:Columns>
</mx:DataGrid>
Nur weiß ich nicht im Voraus, wie viele Spalten es wird. Also habe ich versucht, den Aufbau der Spalten mit einer Funktion in Actionscript:
private var _columns:Array;
[Bindable]
public function set columns(value:Array):void
{
var c:Array = [];
for each(var object:Object in value)
{
var column:DataGridColumn = new DataGridColumn();
column.headerText=object.name;
column.width=40;
// Setting the Renderers like this doesn't work!
column.headerRenderer =
path.customComponents.VerticalHeader;
column.itemRenderer =
path.customComponents.CustomDataGridItemRenderer;
c.push(c);
}
myDataGrid.columns = c;
}
public function get columns():Array
{
return _columns;
}
Aber aus irgendeinem Grund macht die kann nicht so eingestellt werden. (Column.itemRenderer = com.ItemRenderer).
Was ist der richtige Weg, um diese zu setzen rendert dynamisch?
Lösung
itemRenderer
und headerRenderer
erwartet einen mx.core.IFactory
als Wert. In mxml, dass Sie der Zeichenfolge Wert übergeben wird automatisch in mx.core.ClassFactory
umgewandelt. In Actionscript haben Sie es selbst zu tun.
column.itemRenderer
= new ClassFactory(path.customComponents.CustomDataGridItemRenderer);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow