0

3列のデータグリッドがあります。異なる列に2つの異なるレンダラーを適用しました(列1にレンダラーA、列3にレンダラーBと言います)。

現在、B(列3のレンダラー)のセットData()で、何らかの条件に基づいてRequiredflagを変更しています。セットDataofA(列1のレンダラー)で、RequiredFlagをチェックし、それに応じてスタイルを変更しています。

問題は行の場合です。Aは最初の列であるためBの前にレンダリングされるため、requiredFlagの更新された値を取得しません(requiredFlagはBで更新されるため)。

では、3番目の列のセルをレンダリングした後、どういうわけか最初の列のセルを再度レンダリングできますか?または、requiredFlagの値が3番目の列のセルで変更された後、行全体を再度レンダリングできる場合。

4

1 に答える 1

0

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

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 に答える