0

我有一个包含三列的数据网格。我在不同的列上应用了两个不同的渲染器(比如第 1 列的渲染器 A 和第 3 列的渲染器 B)。

现在在 B (第三列的渲染器)的 set Data() 中,我正在根据某些条件更改 Requiredflag。在 A 的集合数据(第 1 列的渲染器)中,我正在检查 RequiredFlag 并相应地更改其样式。

问题在于行,A 在 B 之前呈现,因为它是第一列,因此它没有获得 requiredFlag 的更新值(因为 requiredFlag 在 B 中更新)。

那么我可以在渲染第三列的单元格后以某种方式再次渲染第一列的单元格吗?或者,如果我可以在第三列单元格中 requiredFlag 的值更改后再次渲染整行。

4

1 回答 1

0

把itemrender看成一个视图,所以渲染器本身不做任何计算,只检查对象的值...

如果我理解正确,我会做这样的事情......

(也许您需要将检查从设置数据移动到更新显示列表)

例子:

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

如果这不是您要查找的内容,请添加一些代码...

于 2012-10-24T09:05:34.137 回答