Actionscript 3 使用as3中的项目渲染器有条件地将图像添加到datagrid

Actionscript 3 使用as3中的项目渲染器有条件地将图像添加到datagrid,actionscript-3,conditional-statements,itemrenderer,advanceddatagrid,Actionscript 3,Conditional Statements,Itemrenderer,Advanceddatagrid,我使用嵌入在数据网格列中的项目渲染器将图像添加到数据网格的单元格中。只有当单元格行中的数据满足某些要求时,我才需要向单元格中添加图像。下面是我试图实现的目标: <mx:AdvancedDataGridColumn dataField="delete" headerText="Delete" > <mx:itemRenderer> <mx:Component> <mx:VBox hor

我使用嵌入在数据网格列中的项目渲染器将图像添加到数据网格的单元格中。只有当单元格行中的数据满足某些要求时,我才需要向单元格中添加图像。下面是我试图实现的目标:

<mx:AdvancedDataGridColumn dataField="delete" headerText="Delete" >
        <mx:itemRenderer>
            <mx:Component>
                <mx:VBox horizontalAlign="center" verticalAlign="middle">
                    <mx:Script>
                        <![CDATA[                                       
                            public function showImage():void{
                                if(rowData.column1 == "image1"){
                                    image1.visible = true;
                                }
                                else{
                                    image1.visible = false;
                                }
                        ]]>
                    </mx:Script>
                    <mx:Image source="{image1}" visible="{showImage}"  id="deleteFile" click="" scaleX="0.1" scaleY="0.1" horizontalCenter="true" horizontalAlign="center"/>                                    
                </mx:VBox>
            </mx:Component>
        </mx:itemRenderer>
            </mx:AdvancedDataGridColumn>

将以下代码添加到


设置数据
网格
调用以进行设置的函数,这是覆盖将条件属性应用于ItemRenderer的最佳函数

更新城市报刚刚添加了与我相同的答案,但我将把这个留给子孙后代:——)

数据
将是您放在数据网格
数据提供程序

中的数据类型的对象,请检查此项

  <mx:AdvancedDataGridColumn dataField="delete" headerText="Delete" >
    <mx:itemRenderer>
        <mx:Component>
            <mx:VBox horizontalAlign="center" verticalAlign="middle">
                <mx:Image source="{image1}" visible="{data.image1 == 'image1'}"  id="deleteFile" click="" scaleX="0.1" scaleY="0.1" horizontalCenter="true" horizontalAlign="center"/>                                    
            </mx:VBox>
        </mx:Component>
    </mx:itemRenderer>
 </mx:AdvancedDataGridColumn>

但我鼓励您构建一个单独的类,并将其设置为列的itemRenderer。 获取有关类似stackoverflow问题的更多详细信息:


这里似乎没有问题,我该怎么做?条件语句很好,但是我如何恰当地调用它,使图像仅在满足该语句的情况下才会显示。覆盖
公共函数集数据()。我有点不知所措。我已经详细阐述了绑定没有风险,因为
数据提供程序可以将数据设置为null,如果数据提供程序为null,则网格中没有行。所以不需要调用任何渲染器。请尝试该示例并说服自己没有运行时错误。很公平,非类型对象上的属性也存在同样的问题。但是您已经通过建议定制类解决了这个问题,我完全同意这一点with@CyanAngel是的,这肯定是有风险的。不管怎样,都应该进行空检查。在这种情况下,它是有效的,但计算此类内容的最佳位置不是设置数据,而是提交属性。您可能是对的,我刚刚离开了Adobe文档,它似乎鼓励设置数据
override public function set data(value:Object):void
{
     super.data = value;

     if(value.column1 == "image1"){
            image1.visible = true;
     }
     else{
          image1.visible = false;
     }

}
  <mx:AdvancedDataGridColumn dataField="delete" headerText="Delete" >
    <mx:itemRenderer>
        <mx:Component>
            <mx:VBox horizontalAlign="center" verticalAlign="middle">
                <mx:Image source="{image1}" visible="{data.image1 == 'image1'}"  id="deleteFile" click="" scaleX="0.1" scaleY="0.1" horizontalCenter="true" horizontalAlign="center"/>                                    
            </mx:VBox>
        </mx:Component>
    </mx:itemRenderer>
 </mx:AdvancedDataGridColumn>