我有一个名为viewBase的视图组件,我在其中定义了一个高级数据网格,其中包含几个用于datagrid列的项呈示器。现在我有一个要求,我需要使用相同的视图viewBase组件,但不要求使用任何项目渲染器。
有人可以告诉我如何覆盖在视图组件中声明的itemrenderer吗?
答案 0 :(得分:1)
如果你有一个带有AdvancedDataGrid的组件ViewBase,你需要在其中创建一个动态的渲染器,你可以像下面的例子那样做(威胁级别的渲染器是动态的):
mx:Script>
import mx.collections.ArrayCollection;
import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer;
[Bindable]
public var monitoringArrayCollection : ArrayCollection;
[Bindable]
public var threatRendererClass : Class = AdvancedDataGridItemRenderer;
/mx: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>
import mx.collections.ArrayCollection;
import mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer;
[Bindable]
public var monitoringArrayCollection : ArrayCollection;
[Bindable]
public var threatRendererClass : Class = AdvancedDataGridItemRenderer;
然后,使用具有不同渲染器的此类组件的示例可以如下:
<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>
其中
是自定义渲染器,例如:<mx:VBox>
<components:ViewBase />
<components:ViewBase threatRendererClass="{ThreatRenderer}" />
</mx:VBox>
<mx:VBox>
<components:ViewBase />
<components:ViewBase threatRendererClass="{ThreatRenderer}" />
</mx:VBox>
ThreatRenderer