2015-04-10 4 views
0

Итак, я изучаю, как редактировать/проверять ввод данных в ячейке 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()) сообщение " всем привет!" будет появляться. Мой вопрос: почему он появляется дважды, если я только редактирую один номер телефона за раз? Насколько мне известно, это сообщение должно появляться только один раз для каждого изменения номера телефона, а не дважды. Есть ли что-то, что мне не хватает о том, как работает каркас?

ответ

0

Это как ошибка. Когда я нажимаю tab/enter или клик в другой ячейке. Это генерирует событие itemEditEnd и перемещает фокус в новую редактируемую ячейку.

В случае обработчика события itemEditEnd отображается предупреждение. Это всплывающее окно удаляет фокус из этой редактируемой ячейки ... таким образом, отправляя второй itemEditEnd событие.

Итак, для этого вам нужно поместить некоторую логику для предотвращения второго окна предупреждения. Например, установите одну переменную boolean и сделайте true, когда предупреждение будет однократно.

Этот же вопрос задайте уже здесь.

Why does Alert.show() give me two Alert boxes?

И многие люди получают один и тот же вопрос раньше.

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^