MX系とSpark系ではコンポーネントが色々違うが、今回ComboBoxでハマった。
MX系のComboBoxは編集に関するフラグがあるがSpark系はこれが無い。
どうも、editable=falseのComboBoxはDropDownListを使うらしい。
そして、このComboBoxの編集を利用する場合、例えば初期設定で、labelに
りんご、みかん、いちご
と言う3項目を用意しておいて、それを選択しても良いし、直接「ぶどう」と書き込んでも良い様にしておいた場合、この値をDBへ渡す為にはどうしたら良いか?
色々試行錯誤して落ち着いたのが以下の方法
※dataはPHPサービスへ渡すオブジェクトでhoge_comboがComboBoxだ。
var data:Object=new Object;
var temp:*;
temp=hoge_combo.selectedItem;
if (temp is String)
{
data.hoge_name = hoge_combo.selectedItem;
}
else
{
data.hoge_name = hoge_combo.selectedItem.label;
}
つまり、編集して入力した場合と、選択した場合では渡す物が異なるのでこの二通りに対応してく必要があると言うことだ。表示欄のtextのプロパティを用意しておいてくれれば良いのにと思うが何故かこれが無いので、こう言う方法になる。
逆に、今回初めて、「prompt」と言うプロパティがあって、これに「-選択又は入力-」と入れておくと、空の時はこれを表示してくれると言う便利な機能がある事を知った(笑)
習うより慣れろだ。