使用as3中的项呈示器有条件地将图像添加到数据网格

时间:2014-05-22 10:26:29

标签: actionscript-3 conditional-statements itemrenderer advanceddatagrid

我使用嵌入在数据网格列中的项呈示器将图像添加到datagrid的单元格。只有当来自单元行的数据满足某些要求时,我才需要将图像添加到单元格。以下是我想要实现的目标:

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

3 个答案:

答案 0 :(得分:1)

将以下代码添加到<mx:Script>

override public function set data(value:Object):void
{
    super.data = value;
    showImage();
}

set datagrid调用设置的函数,这是覆盖将条件属性应用于ItemRenderer的最佳函数

答案 1 :(得分:1)

检查出来

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

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

How can I know when a Button in a Flex DataGrid itemRenderer is clicked?

Flex 4 - DataGrid with Button in cells

答案 2 :(得分:0)

关于覆盖set data

的评论,CyanAngel是正确的

更新 CityAngle刚刚添加了与我相同的答案,但我会将此留给后人: - )

override public function set data(value:Object):void
{
     super.data = value;

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

}

data将是您在DataGrids dataProvider中输入的对象。