Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 项目渲染器-在flex中渲染行_Actionscript 3_Apache Flex_Flex4_Flex3_Itemrenderer - Fatal编程技术网

Actionscript 3 项目渲染器-在flex中渲染行

Actionscript 3 项目渲染器-在flex中渲染行,actionscript-3,apache-flex,flex4,flex3,itemrenderer,Actionscript 3,Apache Flex,Flex4,Flex3,Itemrenderer,我有一个三列的数据网格。我在不同的列上应用了两种不同的渲染器(例如,第1列的渲染器A和第3列的渲染器B) 现在,在B(第三列的渲染器)的set Data()中,我正在根据某些条件更改Requiredflag。在A(列1的渲染器)的集合数据中,我正在检查RequiredFlag并相应地更改其样式 问题是对于一行,a在B之前呈现,因为它是第一列,所以它没有得到requiredFlag的更新值(因为requiredFlag在B中更新) 那么,在渲染第三列的单元格之后,我是否可以以某种方式再次渲染第一列

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

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

问题是对于一行,a在B之前呈现,因为它是第一列,所以它没有得到requiredFlag的更新值(因为requiredFlag在B中更新)


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

将itemrender视为视图,这样渲染器本身不会进行任何计算,只需检查对象的值即可

如果我理解正确,我会这样做

(可能需要将检查从set data移动到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);
   }
}
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
   }
}
itemrenderb.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);
   }
}
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
   }
}

如果这不是您想要的,请添加一些代码…

因此,我的第一列单元格的样式与第三列的requiredFlag值不同步:(确定要遵循的经验法则让渲染器执行渲染而不是数据操作。将渲染器视为一个视图。因此,记住这一点,请在更新datagrid之前更新数据提供程序。您的意思是渲染器B将更改数据提供程序吗?刷新数据提供程序将是确定的。所以“requiredFlag”或“style”应该是dataProvider的一部分,然后可以在数据源更改时更新它们。