ComboBox
私はすべてがうまくいっているによって移入されるフレックスを持ってdataprovider
います...
デフォルトの「 -- select a item --」 オプションを 0 インデックスに追加したいのですが、これを行うにはどうすればよいdataprovider
ですか? そのような例は見たことがありませんが、これが難しいとは想像できません...
ComboBox
私はすべてがうまくいっているによって移入されるフレックスを持ってdataprovider
います...
デフォルトの「 -- select a item --」 オプションを 0 インデックスに追加したいのですが、これを行うにはどうすればよいdataprovider
ですか? そのような例は見たことがありませんが、これが難しいとは想像できません...
デフォルト項目を選択可能にする必要がない場合は、 のprompt
プロパティを使用してを -1ComboBox
に設定できます。これにより、ユーザーが別の値を選択するまで、selectedIndex
設定した文字列が選択された値として表示されます。propmt
ただし、オプションのリストには表示されません。
私は今日この問題に遭遇し、私の解決策を共有したいと思いました。
データプロバイダーとしてオブジェクトを含むArrayCollectionを持つComboBoxがあります。アプリケーションが実行されると、RemoteObjectを使用して外に出てArrayCollection/Objectsを取得します。その呼び出しのイベントハンドラーで、ArrayCollectionの先頭に別のオブジェクトを追加して選択します。
var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;
これは私のComboBoxが参考のためにどのように見えるかです:
<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />
過去にこれに対処した方法は、コンボボックスのデータプロバイダーとして機能する新しいコレクションを作成し、元のソースへの変更をリッスンすることです ( mx.BindingUtils.ChangeWatcher
. このような通知を受け取ると、カスタム データ プロバイダーを再作成します。
これにアプローチするより良い方法を知っていたらいいのにと思います。念のため、この質問を監視します。
これは、コンボボックスの選択されたデフォルト値に対して次のコードで使用できます
var index:String = "foo";
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) {
if(comboBox.dataProvider[objIndex].label == index)
{
comboBox.selectedIndex = objIndex;
break;
}
}
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" />