描述与标题基本相同。这是我刚才发表的一篇相关文章: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。谢谢!
答案 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");