动态设置dataGridColumn的ItemRenderer
Posted
技术标签:
【中文标题】动态设置dataGridColumn的ItemRenderer【英文标题】:Set the dataGridColumn's ItemRenderer dynamically 【发布时间】:2010-12-21 00:28:17 【问题描述】:我有这个数据网格:
<mx:DataGrid id="myDataGrid">
<mx:columns>
<mx:DataGridColumn dataField="colA" headerText="Column A:"
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)。
动态设置这些渲染的正确方法是什么?
【问题讨论】:
【参考方案1】:itemRenderer
和 headerRenderer
期望 mx.core.IFactory
作为其值。在 mxml 中,您传递的字符串值会自动转换为mx.core.ClassFactory
。在 ActionScript 中,您必须自己完成。
column.itemRenderer
= new ClassFactory(path.customComponents.CustomDataGridItemRenderer);
【讨论】:
以上是关于动态设置dataGridColumn的ItemRenderer的主要内容,如果未能解决你的问题,请参考以下文章
如何同时输入 , 和 .然后将其格式化为 .用于所有文化中的 DataGridColumn?