Apache flex 如何动态覆盖datagrid组件的列项呈现器

Apache flex 如何动态覆盖datagrid组件的列项呈现器,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我有一个名为viewBase的视图组件,在其中我定义了一个高级datagrid,其中datagrid列的项目呈现器很少。现在我需要使用相同的视图viewBase组件,但不需要使用任何项目渲染器 有人能告诉我如何覆盖视图组件中声明的ItemRenders吗?如果您有一个带有AdvancedDataGrid的组件ViewBase,其中一个渲染器需要动态,您可以执行以下示例中的smth(threatLevel的渲染器是动态的): mx:Script> import mx.collec

我有一个名为viewBase的视图组件,在其中我定义了一个高级datagrid,其中datagrid列的项目呈现器很少。现在我需要使用相同的视图viewBase组件,但不需要使用任何项目渲染器


有人能告诉我如何覆盖视图组件中声明的ItemRenders吗?

如果您有一个带有AdvancedDataGrid的组件ViewBase,其中一个渲染器需要动态,您可以执行以下示例中的smth(threatLevel的渲染器是动态的):

mx:Script>

        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:Script>

        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>

如果您有一个带有AdvancedDataGrid的组件ViewBase,其中一个渲染器需要进行动态渲染,您可以执行以下示例中的smth(threatLevel的渲染器是动态的):

mx:Script>

        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:Script>

        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>

我们可以看一下代码吗?我不明白你在问什么。代码可以帮助我们理解。itemRenderer是DataGrid列上的一个属性,因此您可以重写它以执行其他操作。但是,itemRenderer也可以引用用于创建DataGrid列的组件,在这种情况下,您不会覆盖它,但可以扩展它。我们可以看看代码吗?我不明白您在问什么。代码可以帮助我们理解。itemRenderer是DataGrid列上的一个属性,因此您可以重写它以执行其他操作。但是,itemRenderer也可以引用用于创建DataGrid列的组件,在这种情况下,您不会覆盖它,但可以扩展它。