0

実際、各行のセル内に 2 つの RadioButton コントロールを持つ Datagrid があります。このようなもの:

======================================================
|             |             |   (o) Radiobutton #1   |
|   cell #1   |   cell #2   |   (o) Radiobutton #2   |
======================================================

この後、1行を削除して別の行を追加すると、Flexは以前に削除されたRadioButtonsを自動的に再利用します(リソースを最適化するためだと思います)。

各RadioButtoncreationCompleteにイベント ハンドラーを関連付ける

  1. 特定のセルに 2 つの RadioButton を含む 1 つの行を作成します。両方のcreationCompleteハンドラーが正常に実行されます。
  2. この行を削除して、別の行を追加します。
  3. 現在、creationCompleteハンドラは実行されていないため、Flex は以前の RadioButton を使用しています。

しかし、私は自分のアプリでこの動作をしたくありません。Flex に毎回コンポーネントを強制的に作成させる (再利用を避ける) 方法はありますか? ありがとう!

4

2 に答える 2

1
But I don't want this behaviour in my app.

パフォーマンスとメモリ使用量が気になる場合は、アプリでこの動作が必要です。レンダラーの作成について読んでください。再利用可能なレンダラーの作成に関するセクションに特に注意してください。

Is there any way to force Flex to create the components every single time (avoiding reuse)?

dataProvider のすべての項目が画面に表示されるように、DataGrid のサイズを変更できます。

Spark DataGrid を使用している場合は、ほとんどの場合、レイアウトのプロパティを設定して仮想レイアウトを使用しないようにすることができます。しかし、Spark DataGrid API についてはあまり掘り下げていないので、そこにあるかどうかはわかりません。

dataProvider の要素ごとに 1 つのレンダラー インスタンスを作成するのではなく、レンダラーを書き直して dataChange() イベントをリッスンし、レンダラーの表示要素 (別名 RadioButton) を変更することを心からお勧めします。

于 2012-05-28T17:25:56.467 に答える
0

Flex 4/spark リストでは、useVirtualLayout プロパティ (http://help.adobe.com/en_US/flex/using/WSc2368ca491e3ff92-1483ec4a12136246e76-8000.html) を使用して、これをオンまたはオフにすることができます。ただし、ADG のスパーク バージョンはまだないと思います。そのため、メモリと CPU の使用量を気にすることを前提としたコンポーネントに「行き詰まって」おり、それ以外のことはわかりません。

于 2012-05-28T18:34:49.860 に答える