Итак, я изучаю, как редактировать/проверять ввод данных в ячейке Flex 3 DataGrid. Вот простой пример, который я использовал для изучения:itemEditEnd событие в Flex DataGrid
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%" backgroundSize="100%">
<mx:DataGrid editable="true" itemEditEnd="check(event)">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Phone" dataField="phone"/>
</mx:columns>
<mx:dataProvider>
<mx:ArrayCollection>
<mx:Object name="John" phone="(69)2345-6798"/>
<mx:Object name="Mary" phone="(69)1234-5678"/>
</mx:ArrayCollection>
</mx:dataProvider>
</mx:DataGrid>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
private function check(event:DataGridEvent):void{
if(event.dataField == "phone"){
Alert.show("hi there!");
}
}
]]>
</mx:Script>
</mx:Application>
После компиляции и запуска .swf, это только показывает, сетка с двумя рядами; и после редактирования любого из телефонных номеров в сетке и нажатия за ним (это означает, что отредактированная ячейка теряет фокус, поэтому Flex интерпретирует это как «законченное редактирование», тем самым вызывая событие itemEditEnd
, вызывая функцию check()
) сообщение " всем привет!" будет появляться. Мой вопрос: почему он появляется дважды, если я только редактирую один номер телефона за раз? Насколько мне известно, это сообщение должно появляться только один раз для каждого изменения номера телефона, а не дважды. Есть ли что-то, что мне не хватает о том, как работает каркас?