Apache flex 在运行时从spark创建mx dataGrid itemRenderer

Apache flex 在运行时从spark创建mx dataGrid itemRenderer,apache-flex,flex-spark,Apache Flex,Flex Spark,如何通过在运行时复制sparkColumn.itemRenderer来设置mxColumn.itemRenderer 我有一个使用mx:DataGrid、mx:AdvancedDataGrid和s:DataGrid的应用程序 我们正在使用mx:PrintDataGrid和mx:PrintAdvancedDataGrid实现一个“打印”功能 我们将可打印数据网格的列设置为要打印的数据网格的列,如下所示:printDataGrid.columns=targetDataGrid.columns//或

如何通过在运行时复制sparkColumn.itemRenderer来设置mxColumn.itemRenderer

我有一个使用mx:DataGrid、mx:AdvancedDataGrid和s:DataGrid的应用程序

我们正在使用mx:PrintDataGrid和mx:PrintAdvancedDataGrid实现一个“打印”功能

我们将可打印数据网格的列设置为要打印的数据网格的列,如下所示:
printDataGrid.columns=targetDataGrid.columns//或
printAdvancedDataGrid.columns=targetDataGrid.columns

这样做,打印将保留ItemRenders的格式

当要打印的dataGrid为spark时,将迭代列,并生成新的spark列

for(变量i:uint;i
{

sparkColumn=sparkColumns.getItemAt(i)作为GridColumn;
mxColumn=新的DataGridColumn();
mxColumn.headerText=sparkColumn.headerText;
mxColumn.dataField=sparkColumn.dataField;
//mxColumn.itemRenderer=sparkColumn.itemRenderer;
mxColumns.push(mxColumn);
}

dataField和headerText属性很容易从mx转换为spark列,但ItemRenderer更为复杂

如何将mxColumn.itemRenderer设置为sparkColumn.itemRenderer

有人知道如何在spark itemRenderer中挖掘组件/函数/属性吗?如何将其“类型强制转换”到mx itemRenderer

有人知道如何挖掘组件/功能/属性吗 在星火中?如何将其“类型转换”到mx 项目渲染器

即使这是可能的反思,我认为这将是一个非常艰巨的任务

如果我有这样的要求,我会考虑两种选择。

首先是通过扩展
UIComponent
并实现接口为每列创建ItemRenders,以便
Spark Grid
Mx Grid
可以使用它们。然后,您将能够取消标记线

第二个是扩展spark列并添加字段“
type
”,该字段将保存,例如:“Label”、“Date”、“CustomType”、“usdType”等

然后创建描述符,该描述符将保存列的类型、mx渲染器类和spark渲染器类

比如说,

var columnsDescripor:Object = {};
columnsDescripor["label"] = {mx: mx.controls.Label, s: spark.components.Label};
columnsDescripor["usd"] = {mx: MXusdRenderer, s: SusdRenderer};
那么

var columnsDescripor:Object = {};
columnsDescripor["label"] = {mx: mx.controls.Label, s: spark.components.Label};
columnsDescripor["usd"] = {mx: MXusdRenderer, s: SusdRenderer};
sparkColumn = ExtendedGridColumn(sparkColumns.getItemAt(i));
mxColumn.itemRenderer = new (columnsDescripor[sparkColumn.type].mx);