如何使Datagrid的基于图像的itemRenderer可见或不可见,具体取决于数据网格中其行和列的值?

时间:2012-08-14 21:06:24

标签: actionscript-3 flex itemrenderer

描述与标题基本相同。这是我刚才发表的一篇相关文章:Why would an Image-based itemRenderer always be visible?基本上,在这种情况下用于itemRenderer列的dataField是“正在进行的”,我想将itemRenderer和/或其图像设置为true或者false,取决于该行中正在进行的值。如果itemRenderer是基于标签的,我可以根据具体情况将文本设置为不同的值。然而,某些特定属性(如可见)是有问题的。到目前为止我发现使用状态的文档很难遵循,我甚至不确定这些适用于此处。我该怎么做呢?顺便提一下,当前的代码如下:

<mx:DataGridColumn dataField="ongoing" id="ongoing" headerText="">
<mx:itemRenderer>
    <mx:Component>
        <mx:Image source="logo.jpg">
            <mx:Script>
                <![CDATA[
                    override public function set data(value:Object):void {
                        super.data = value;
                        super.visible = (value.ongoing != 'False');
                    }
                ]]>
            </mx:Script>
        </mx:Image>
    </mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>

我也尝试过使用set visible override。谢谢!

2 个答案:

答案 0 :(得分:0)

这没有任何意义,特别是在Datagrid中。如果您不想显示数据,请使用集合的过滤功能对其进行过滤。否则你就会有空单元格。

此外,您正在反对组件实时循环: 在实际渲染组件之前将调用在数据中设置可见 - 因此没有任何效果。如果您使用的是vanilla对象而没有使用类,则更改属性的值也不会产生任何影响。

在网站上注意:布尔值应该是布尔值,没有字符串和内联渲染器会导致一些范围问题,这就是为什么我建议使用单独的组件定义(也就是.as或.mxml文件)。

答案 1 :(得分:0)

gokiさん可以在这里找到答案:

http://www.fxug.net/modules/xhnewbb/viewtopic.php?topic_id=2229

至少目前,我必须将源设置为图像或空白字符串以使其工作(看起来他试图做一些稍微不同的事情),但它确实有效。

编辑:这两行代码替换了他搞乱可见属性的地方:

var property0:SetProperty = new SetProperty(this, "source", "");
var property1:SetProperty = new SetProperty(this, "source", "dot.png");