ComboxBox を持つ ItemEditor があります。ユーザー エクスペリエンスを向上させるために、ユーザーがコンボボックスで値を選択するたびに ItemEditor を終了したいと考えています。そのため、セルの外側をクリックして選択を検証する必要はありません。
私はこれをしましたが、うまくいきません。なんで ?
private function comboChange(event:IndexChangeEvent):void
{
var dgOrder:DataGrid = owner as DataGrid;
var dgEvent:GridEvent = new GridEvent(GridEvent.GRID_CLICK);
dgEvent.preventDefault();
dgOrder.dispatchEvent(dgEvent);
}
]]>
</fx:Script>
<s:ComboBox id="ddlCurrency" width="100%" dataProvider="{lstCurrencies}" labelField="CurrencyCode"
prompt="Select a currency" change="comboChange(event)"></s:ComboBox>
Marcxコメントの後に編集:
override public function get value():Object {
trace("get value");
ddlCurrency.selectedIndex = newCountryID;
if (ddlCurrency.selectedIndex == -1 || ddlCurrency.selectedItem.CurrencyID == -1){
updateCurrency(data.OrderID, -1);
return "";
} else if ((lstCurrencies[ddlCurrency.selectedIndex as int] as Object).CurrencyCode.toString() != ddlCurrency.selectedItem.CurrencyCode){
return oldValue;
} else {
updateCurrency(data.OrderID, ddlCurrency.selectedItem.CurrencyID);
return ddlCurrency.selectedItem.CurrencyCode;
}
}
private function comboChange(event:IndexChangeEvent):void
{
var dgOrder:DataGrid = owner as DataGrid;
newCountryID = ddlCurrency.selectedIndex;
dgOrder.setFocus();
}
dropdownList で値を選択すると (以前はコンボボックスでした)、combochange が呼び出され、ddlCurrency.selectedIndex が選択したばかりで、get value() 関数が呼び出されると、同じ ddlCurrency.selectedIndex が前の索引。get value() で新しいインデックスを強制するために、新しいインデックスを変数に保存するのはそのためです。
私は自分自身を明確にしたことを願っています。
前もって感謝します。アントワーヌ。