2

実行時に sparkColumn.itemRenderer をコピーして mxColumn.itemRenderer を設定するにはどうすればよいですか?

mx:DataGrid、mx:AdvancedDataGrid、および s:DataGrid を使用するアプリがあります。

mx:PrintDataGrid と mx:PrintAdvancedDataGrid を使用して、「印刷」機能を実装しています。

次のように、印刷可能な dataGrid の列を、印刷する dataGrid の列に設定します
。//または
printAdvancedDataGrid.columns = targetDataGrid.columns;

このようにすると、印刷は itemRenderers の形式を保持します。

dataGrid-to-print が spark の場合、列が反復され、新しい spark 列が作成されます

for (var i:uint; i < sparkColumns.length; i++)
{

    sparkColumn = sparkColumns.getItemAt(i) as GridColumn;<br/>
    mxColumn = new DataGridColumn();<br/>
    mxColumn.headerText = sparkColumn.headerText;<br/>
    mxColumn.dataField = sparkColumn.dataField;<br/>
    //mxColumn.itemRenderer =  sparkColumn.itemRenderer;<br/>
    mxColumns.push(mxColumn);

}

dataField プロパティと headerText プロパティは、mx から Spark 列に簡単に変換できますが、itemRenderers はより複雑です。

mxColumn.itemRenderer を sparkColumn.itemRenderer に設定するにはどうすればよいですか?

spark itemRenderer のコンポーネント/関数/プロパティをスクープする方法を知っている人はいますか? それをmx itemRendererに「型キャスト」する方法は?

4

1 に答える 1

0

スパーク itemRenderer のコンポーネント/関数/プロパティをスクープする方法を知っている人はいますか? それをmx itemRendererに「型キャスト」する方法は?

リフレクションでできたとしても、なかなか大変だと思います。

そのような要件がある場合、2 つのオプションを検討します。

UIComponentまず、インターフェイスを拡張および実装して、各列の itemRenderer を作成しSpark GridMx Gridそれらを使用できるようにします。その後、リマークされた行のマークを外すことができます。

2 つ目は、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};

それで、

sparkColumn = ExtendedGridColumn(sparkColumns.getItemAt(i));
mxColumn.itemRenderer = new (columnsDescripor[sparkColumn.type].mx);
于 2013-08-03T23:10:04.957 に答える