0

描述与标题基本相同。这是我不久前发表的一篇相关文章:为什么基于图像的 itemRenderer 总是可见的? 基本上,在这种情况下,用于 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>

我也尝试过使用设置可见覆盖。谢谢!

4

2 回答 2

0

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

http://www.fxug.ne​​t/modules/xhnewbb/viewtopic.php?topic_id=2229

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

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

var property0:SetProperty = new SetProperty(this, "source", "");
var property1:SetProperty = new SetProperty(this, "source", "dot.png");
于 2012-08-14T22:17:35.623 回答
0

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

此外,您正在处理组件生命周期:在数据中设置可见将在组件实际呈现之前调用 - 因此没有效果。如果您使用的是 vanilla 对象并且没有类,则属性值的更改也不会产生任何影响。

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

于 2012-08-14T21:28:45.483 回答