dataGridColumnのItemRendererを動的に設定します
-
05-07-2019 - |
質問
この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;
}
しかし、何らかの理由で、レンダリングをこのように設定することはできません。 (column.itemRenderer = com.ItemRenderer)。
これらのレンダリングを動的に設定する適切な方法は何ですか?
解決
itemRenderer
および headerRenderer
は、値として mx.core.IFactory
を想定しています。 mxmlでは、渡す文字列値は自動的に mx.core.ClassFactory
に変換されます。 ActionScriptでは、自分で行う必要があります。
column.itemRenderer
= new ClassFactory(path.customComponents.CustomDataGridItemRenderer);
所属していません StackOverflow