【问题标题】:Set the dataGridColumn's ItemRenderer dynamically动态设置dataGridColumn的ItemRenderer
【发布时间】:2010-12-21 00:28:17
【问题描述】:

我有这个数据网格:

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

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

【问题讨论】:

    标签: apache-flex actionscript-3 datagrid itemrenderer


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-29
      • 2011-11-09
      • 2012-01-21
      • 2010-12-16
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 2011-05-02
      相关资源
      最近更新 更多