Как динамически переопределить средства визуализации элементов столбца для компонента сетки данных - PullRequest
1 голос
/ 24 февраля 2011

У меня есть компонент представления, называемый viewBase, в котором я определил расширенную сетку данных с несколькими средствами визуализации элементов для столбцов сетки данных.Теперь у меня есть требование, когда мне нужно использовать тот же компонент viewBase, но не требуется использовать средства визуализации элементов.

Может кто-нибудь сказать мне, как переопределить itemrenderers, которые объявлены в компоненте представления?

1 Ответ

1 голос
/ 05 марта 2011

Если у вас есть компонент ViewBase с AdvancedDataGrid, один из средств визуализации которого вам нужно сделать динамическим, вы можете сделать что-нибудь, как в примере ниже (средство визуализации для ThreatLevel является динамическим): mx:Script></p> <pre><code> import mx.collections.ArrayCollection; import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer; [Bindable] public var monitoringArrayCollection : ArrayCollection; [Bindable] public var threatRendererClass : Class = AdvancedDataGridItemRenderer;

/ те: Script>

<mx:AdvancedDataGrid dataProvider="{monitoringArrayCollection}">
    <mx:columns>
        <mx:AdvancedDataGridColumn dataField="firstName" />
        <mx:AdvancedDataGridColumn dataField="lastName" />
        <mx:AdvancedDataGridColumn dataField="threatLevel" itemRenderer="{new ClassFactory(threatRendererClass)}" />
    </mx:columns>
</mx:AdvancedDataGrid>

Тогда пример использования такого компонента с различными средствами визуализации может быть следующим:

</p> <pre><code><mx:VBox> <components:ViewBase /> <components:ViewBase threatRendererClass="{ThreatRenderer}" /> </mx:VBox>

Где ThreatRenderer - пользовательский рендер, например:

</p> <pre><code>public class ThreatRenderer extends UIComponent implements IDataRenderer, IListItemRenderer { private var _data : Object; private var _dataChanged : Boolean = false; public function get data():Object { return _data; } public function set data(value:Object):void { _data = value; _dataChanged = true; invalidateDisplayList(); } protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); if (!_dataChanged || !data) return; var g : Graphics = this.graphics; g.clear(); g.beginFill(0xFF0000, 1); g.drawRect(0, 0, unscaledWidth*Number(data.threatLevel)/100, unscaledHeight); _dataChanged = false; } }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...