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?

War es hilfreich?

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
scroll top