我正在尝试创建一个datagrid,它会根据某些条件动态地为其添加列。 现在,我可以添加列,但我希望新添加的列具有使用itemRenderer的按钮。
虽然我无法做到这一点。在第1行获得此错误
描述资源路径位置类型1067:a的隐式强制 mx.controls类型的值:按钮到不相关的类型 mx.core:IFactory的。 Demo.mxml / Demo / src第14行Flex问题
有人可以帮忙吗?
以下是代码段:
private function addDataGridColumn(dataField:String):void {
var dgc:DataGridColumn = new DataGridColumn();
dgc.itemRenderer = button1; // Line 1
var cols:Array = dataGrid.columns;
cols.push(dgc);
dataGrid.columns = cols;
}
答案 0 :(得分:4)
itemRenderer
和itemEditor
属性属于IFactory
类型。在MXML中设置这些属性时,MXML编译器会自动将属性值强制转换为类型ClassFactory
,这是一个实现IFactory接口的类。
在ActionScript
中设置这些属性时,必须将属性值显式转换为ClassFactory
您可能正在寻找此功能,为新添加的列的所有行添加按钮。
private function addDataGridColumn(dataField:String):void {
var dgc:DataGridColumn = new DataGridColumn();
dgc.itemRenderer = new ClassFactory(Button);
var cols:Array = dataGrid.columns;
cols.push(dgc);
dataGrid.columns = cols;
}