0

運がなければこれを一生懸命探しました:

データグリッドの列にコンボボックスを配置する必要があります。ユーザーは、既存のコンボボックス項目から値を選択するだけです。カスタムセルレンダラーを使用する必要があることはわかっています。以下の私の現在の試みを見てください。
この試行は、コンボボックスをデータグリッドに正常に挿入しますが、コンボボックスにデータがありません。実際、データグリッドのコンボボックスをクリックすると、ステージ上の通常のコンボボックスと同じであり、dataProvider はありません。というか、開かない。

したがって、セルレンダラーを変更してデータをコンボに正しく追加し、コンボボックスから値を選択するときにユーザーが行った変更を受け入れる方法を知る必要があります。

どんな助けでも大歓迎です!AS2 ではなく Flex ではなく、AS3 を使用していることに注意してください。

パッケージ {

import fl.controls.ComboBox; 
import fl.controls.listClasses.ICellRenderer; 
import fl.controls.listClasses.ListData; 
import flash.events.Event;
import fl.data.DataProvider;

public class ComboBoxCell extends ComboBox implements ICellRenderer { 
    private var _listData:ListData; 
    private var _data:Object; 
    private var _selected:Boolean;
    private var _mycombo:ComboBox = new ComboBox();

    public function ComboBoxCell() { 

        _mycombo.addItem( { label:"MasterCard", data:0 } );
        _mycombo.addItem( { label:"Visa", data:1 } );
        _mycombo.addItem( { label:"American Express", data:2 } );
        trace("drawn");
    } 

    public function set data(d:Object):void { 
        _data = d; 
    } 

    public function get data():Object { 

        return _data; 
    } 

    public function set listData(ld:ListData):void { 
        _listData = ld; 
    } 

    public function get listData():ListData { 
        return _listData; 
    } 

    public function setMouseState(state:String):void{
    }

    public function get selected():Boolean{
        return _selected;
    }

    public function set selected(value:Boolean):void{
        _selected = value;
    }
} 

}

4

1 に答える 1

1

ここでの問題は、ComboBoxCell クラスが (ステートメントを介して) ComboBoxであるだけなく、(クラス変数を介して) ComboBoxを持っていることだと思います。リスト アイテムを ComboBoxCell の内部 ComboBox (_mycombo) に追加していますが、DataGrid には表示するアイテムがない ComboBoxCell が表示されています。extends ComboBox_mycombo

_mycombo.addItem(...)内部 ComboBox 変数 (_mycombo) を削除し、コンストラクターの addItem ステートメントを から に変更するだけでよいと思いますaddItem(...)

于 2010-12-08T17:23:23.907 に答える