我有一个包含三列的数据网格。我在不同的列上应用了两个不同的渲染器(第1列为Say Renderer A,第3列为Renderer B)。
现在在B(第三列渲染器)的set Data()中,我根据某些条件更改了一个Requiredflag。在设置数据A(第1列的渲染器)中,我正在检查RequiredFlag并相应地更改其样式。
问题是针对一行,A在B之前呈现,因为它是第一列,因此它不会获得requiredFlag的更新值(因为在B中更新了requiredFlag)。
在渲染第三列的单元格后,我能以某种方式再次渲染第一列的单元格吗?或者,如果我可以在requiredFlag的值在第三列的单元格中更改后再次渲染整行。
答案 0 :(得分:0)
将itemrender视为一个视图,因此渲染器本身不进行任何计算,只需检查对象的值...
如果我理解正确,我会做那样的事情......
(也许您需要将支票从设置数据移至updatedisplaylist)
示例:强>
class Test
{
public var col1:String = "Everything";
public var col3:String = "Cars";
public function get color():uint
{
if (col1 == "Everything")
return 0xff0000;
return 0x000000;
}
}
<强> itemrendererA.mxml 强>
override public function set data(value:Object):void
{
super.data = value;
if (super.data != null && super.data is Test)
{
// do what you need to do..
lbl1.text = (super.data as Test).col1;
lbl1.setStyle("color", (super.data as Test).color);
}
}
<强> itemrendererB.mxml 强>
override public function set data(value:Object):void
{
super.data = value;
if (super.data != null && super.data is Test)
{
if ( (super.data as Test).color == 0xff0000)
// do something
else
// do something else
}
}
如果这不是您要找的,请添加一些代码......