我有一个带有 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 就是前一个指数。这就是为什么我将新索引保存在变量中以强制获取值()中的新索引。
我希望我把自己说清楚了。
提前致谢。安托万。