1

データグリッドでカスタムアイテムレンダラーを使用しており、レンダラーのいずれかの値に負の値があったかどうかに基づいて、ボタンを表示または非表示にする必要があります。したがって、最初のレンダラーがオフになっているときにフラグをfalseに設定し、負の値がある場合はそれをtrueに設定し、最後にフラグの値を確認します。レンダラーインスタンスでデータが変更されるたびにdataChangeイベントをディスパッチできることは知っていますが、すべてがいつ完了したかを知ることができるかどうか疑問に思っていました。ありがとう!

4

2 に答える 2

2

そのようなイベントはありません。

他のFlexコンポーネントと同様に、レンダラーはCREATION_COMPLETE作成後にをディスパッチします。 ItemRenderers通常はリサイクルされます(同じオブジェクトにレンダリングする新しいデータが割り当てられます)。したがってCREATION_COMPLETE、リサイクルを無効にしない限り、リッスンするだけでは不十分です。

Sparkコンポーネントの場合、レイアウトクラスListを設定することでリサイクルを無効にできます。SparkクラスがこれをサポートしてuseVirtualLayout=falseいるかどうかはわかりません。DataGridMX DataGridには、これを行う他の方法がある場合があります。

ただし、リサイクルを無効にすると、パフォーマンスに影響を与える可能性があります。DATA_CHANGEイベント付きのあなたのアイデアが最善の解決策だと思います。

  • データの初期状態を決定します(つまり、負の値はありますか)
  • レンダラーで、DATA_CHANGEイベントを使用して(またはレンダラーのdataプロパティのセッターをオーバーライドして)、データがいつ変更されたかを確認します
  • データが変更されたら、バブルするカスタムイベントクラスをディスパッチします。このイベントには、値が負であるかどうかを通知するプロパティがあります。
  • レンダラーからのカスタムイベントがグリッドにバブルアップするため、グリッドに1つのリスナーを追加して、すべてのレンダラーからの変更を処理できます。
于 2012-07-12T17:35:59.090 に答える
1

RendererExistenceEventsを調べる必要があります。リストにあるアイテムの数、または少なくとも一度に表示するアイテムの数に基づいて、それらがすべていつ作成されたかを判断できるはずです。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/RendererExistenceEvent.html

于 2012-07-16T07:44:50.760 に答える