0

Box コンポーネントを拡張する ItemRenderer を持つ DataGridColumn があります。デフォルトの表示は Text コンポーネントです。ユーザーがテキスト コンポーネントをクリックすると、State を変更して PopUpMenuButton の子を追加し、Text コンポーネントを非表示にします。これはうまくいきます。ただし、一度に 1 つの PopUpMenuButton のみを DataGrid に表示できるようにしたいと考えています (itemEditor の動作と同様)。このインスタンスでそれを機能させようとしてあまりにも多くの問題に遭遇したため、itemEditor を使用したくありません。

所有者 (DataGrid) を取得する listData プロパティにアクセスするために、itemRenderer に IDropInListItemRenderer を実装していますが、DataGrid 内の他の itemRenderer の「編集」状態を「オフ」にする方法がわかりません。

どうすればこれを達成できますか?

ありがとう。

4

1 に答える 1

0

どうぞ。listData.owner に変更イベントのリスナーを追加しただけです。それがトリガーされた場合は、currentState を null に更新します。魅力のように機能します。列の itemRenderers にアクセスしてすべてをリセットするよりもはるかに簡単です。パフォーマンスも向上します。

private function label_clickHandler():void
{
    showEditor();
}

private function showEditor():void
{
    this.currentState = "editingMode";

    var ownerListBase:ListBase = ListBase(listData.owner);

    ownerListBase.addEventListener(ListEvent.CHANGE, ownerListBase_changeHandler);
}

private function ownerListBase_changeHandler(event:ListEvent):void
{
    this.currentState = null;

    var ownerListBase:ListBase = ListBase(listData.owner);

    ownerListBase.removeEventListener(ListEvent.CHANGE, ownerListBase_changeHandler);
}
于 2008-12-17T19:14:59.653 に答える