apache-flex - 动态设置dataGridColumn的ItemRenderer

标签 apache-flex actionscript-3 datagrid itemrenderer

我有这个数据网格:

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

只是我事先不知道会有多少列。所以我尝试使用 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;
}

但由于某种原因,渲染不能像这样设置。 (column.itemRenderer = com.ItemRenderer)。

动态设置这些渲染的正确方法是什么?

最佳答案

itemRendererheaderRenderer 期望 mx.core.IFactory 作为其值。在 mxml 中,您传递的字符串值会自动转换为 mx.core.ClassFactory 。在 ActionScript 中,您必须自己完成。

column.itemRenderer 
            = new ClassFactory(path.customComponents.CustomDataGridItemRenderer);

关于apache-flex - 动态设置dataGridColumn的ItemRenderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1809194/

相关文章:

c# - 绑定(bind) WPF DataGrid 文本列的前景

apache-flex - 从 Spark DataGrid 中删除 header

android - 有没有办法隐藏正在运行的 Flex 移动应用程序或更改其名称?

apache-flex - 首选的套接字策略文件服务器实现?

c# - WPF Datagrid Double Click Cell MVVM设计

actionscript-3 - 为什么在Flash as3中动态加载的图像不会在Google Chrome中显示?

apache-flex - 围绕一个圆圈动态间隔数字

apache-flex - 关于如何为 future 的 Flash/Flex/HTML5 开发做准备有什么想法吗?

apache-flex - 在 flex 中使用模板打印

android - 使用 Flex 4.5 定位多个分辨率