动态设置dataGridColumn的ItemRenderer
我有这个 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>
只是我事先不知道会有多少列。因此,我尝试使用 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;
}
但由于某种原因,无法像这样设置渲染。 (列.itemRenderer = com.ItemRenderer)。
动态设置这些渲染的正确方法是什么?
I have this 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>
Only I don't know in advance how many columns there will be. So I tried building the columns with a function 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;
}
But for some reason, the renders cannot be set like this. (column.itemRenderer = com.ItemRenderer).
What is the proper way to set these renders dynamically?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
itemRenderer
和headerRenderer
需要一个mx.core.IFactory
作为其值。在 mxml 中,您传递的字符串值会自动转换为mx.core.ClassFactory
。在 ActionScript 中,您必须自己完成。itemRenderer
andheaderRenderer
expects anmx.core.IFactory
as its value. In mxml, the string value that you pass is automatically converted intomx.core.ClassFactory
. In ActionScript, you have to do it yourself.