2012-10-23 4 views
2

Как установить mxColumn.itemRenderer, скопировав sparkColumn.itemRenderer во время выполнения?создать mx dataGrid itemRenderer от искры во время выполнения

У меня есть приложение, которое использует mx: DataGrid, mx: AdvancedDataGrid и s: DataGrid.

Мы реализуем функцию «печать», используя mx: PrintDataGrid и mx: PrintAdvancedDataGrid.

Мы устанавливаем столбцы dataGrid для печати в столбцы dataGrid, которые мы хотим распечатать, например:
printDataGrid.columns = targetDataGrid.columns; // или
printAdvancedDataGrid.columns = targetDataGrid.columns;

Выполняя это, печать сохраняет формат элементаРедатчики.

Когда DataGrid к печати искра, столбцы итерации, и новые свечи колонны из

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 легко переводить с тх искрами колонн, но itemRenderers являются хитрее.

Как установить mxColumn.itemRenderer в значение sparkColumn.itemRenderer?

Кто-нибудь знает, как выкопать компоненты/функции/свойства в источнике искрителя? Как «набирать тип» для mx itemRenderer?

ответ

0

Кто-нибудь знает, как выкапывать компоненты/функции/свойства в искрах товарах? Как «набирать шрифт» на mx itemRenderer?

Даже если это возможно с отражением, я думаю, что это была бы очень трудная задача.

Если бы у меня было такое требование, я бы рассмотрел два варианта.

Прежде всего, необходимо создать itemRenderers для каждого столбца, расширив UIComponent и внедряя интерфейсы, чтобы Spark Grid и Mx Grid могли их использовать. Затем вы сможете отменить выделенную строку.

Во-вторых, расширить искровой колонку и добавить поле «type», который будет содержать, например: «Этикетка», «Дата», «CustomType», «usdType» и т.д.

Затем создайте дескриптор, который будет содержать тип столбца, класс mx renderer и класс рендеринга искры.

Для примера,

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); 
Смежные вопросы