2

カスタム itemRenderer とラジオ ボタン グループをグリッドの外側に持つ advancedDataGrid があります。ラジオボタンを選択するとき、アイテムレンダラーの表示状態を更新する必要があります。properties 属性を持つ classfactory を使用して、パラメーターをレンダラーに渡します。

グリッドに新しい行を追加すると、itemrenderer は正しい表示状態で表示されますが、ラジオ ボタンを変更したときに既に画面に表示されているレンダラーは表示を更新しません。dataproviderでrefresh()、datagridでinvalidateList()およびinvalidateDisplayList()を呼び出し、dataproviderをnullに設定してからリセットし、列のitemrendererプロパティをnullに設定してからリセットしようとしました....レンダラーの更新を強制するものは何もありません。

グリッドは tabNavigator にあるため、タブを変更してから戻ると、レンダラーはすべて再描画されますが、これは許容できる回避策ではありません。現在のレンダラーをすべて破棄して再作成するようにグリッドに指示するにはどうすればよいでしょうか?

4

1 に答える 1

2

理解した。こちらが簡易版です。

<mx:AdvancedDataGrid 
    id="myDatagrid">
<mx:columns>
    <mx:AdvancedDataGridColumn 
            dataField="Full_Name">
    </mx:AdvancedDataGridColumn>
</mx:columns>
<mx:rendererProviders>
    <mx:AdvancedDataGridRendererProvider 
            renderer="{rendererFactory}"
            columnSpan="0"
            columnIndex="0"
            depth="2"/>
    <mx:AdvancedDataGridRendererProvider
            renderer="{anotherFactory}"
            columnIndex="0"
            columnSpan="0"
            depth="1"/>
</mx:rendererProviders>

{rendererFactory}を変更(既存の更新または新規作成)しても、更新はトリガーされません。ファクトリに変更を加えた後、myDatagrid.rendererProviders = myDatagrid.rendererProvidersを実行しました。これにより、更新がトリガーされ、レンダラーがリサイクルされました。

于 2013-02-25T14:20:27.623 に答える