在Flex中动态地将列添加到datagrid

时间:2011-09-22 19:28:22

标签: flash flex actionscript-3 datagrid

我正在尝试创建一个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;
        }

1 个答案:

答案 0 :(得分:4)

itemRendereritemEditor属性属于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;
            }