2008-11-18 1 views
1

Я пытаюсь сделать простой DataGrid в Flex с событием DoubleClick, и, но я не могу получить itemDoubleClick пожара:Не удается получить itemDoubleClick событие для работы в Flex (даже с doubleClickEnabled = TRUE)

<mx:DataGrid id="gridReportConversions" height="100%" width="100%" mouseEnabled="true" doubleClickEnabled="true" itemDoubleClick="refererRowDoubleClicked(event)"> 
        <mx:columns> 
         <mx:DataGridColumn width="75" dataField="qty" headerText="Qty" /> 
         <mx:DataGridColumn dataField="referer" headerText="URL" /> 
        </mx:columns> 
       </mx:DataGrid> 

Если я используйте событие itemClicked, тогда событие будет поднято просто отлично. Когда я ищу эту проблему, я нахожу много людей, говорящих: «вам нужно установить doubleClickEnabled=true, но я сделал это, и он все еще не работает.

Этот элемент управления вложен в несколько уровней VBox и других контейнеров. Конечно, мне не нужно устанавливать doubleClickEnabled на каждый из этих контейнеров?

Просто чтобы прояснить, как я испытал это - у меня есть окно с предупреждением в моем обработчик события refererRowDoubleClicked и никогда не будет показано, когда я использую itemDoubleClick

+0

Пожалуйста, разместите функцию обработчика событий ... Уверен, что она стреляет, но в функции обработчика есть ошибка, из-за которой он выглядит так, будто он не стреляет. – mmattax 2008-11-19 18:30:20

+0

@mmattax - моя функция содержит Alert.show («функция достигнутого события»), а параметр - событие: Событие. если я изменю itemDoubleClick на itemClick, тогда я вижу сообщение – 2008-11-19 19:34:58

ответ

1

Саймон,

Я был в состоянии получить код для работы , без проблем. Завернул его в нескольких слоях контейнеров, у которых не было установлено значение doubleClickEnabled равным true, чтобы убедиться, что это проблема, но, похоже, это не так.

Мне интересно, почему-то один из родителей вызывает проблему. Можно ли разместить более крупный раздел кода?

Вот что я побежал, чтобы проверить это с помощью:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 
      import mx.collections.ArrayCollection; 

      [Bindable] private var dp:ArrayCollection = new ArrayCollection([{qty:1,referer:'http://google.com'},{qty:25,referer:'http://cnn.com'},{qty:4,referer:'http:stackoverflow.com'}]); 



      private function refererRowDoubleClicked(e:Event):void 
      { 

       var msg:String = "target: " + e.target + "\n\ncurrentTarget: " + e.currentTarget + "\n\nselected item qty: " + gridReportConversions.selectedItem.qty + "\nselected item referer: " + gridReportConversions.selectedItem.referer; 
       Alert.show(msg); 
      } 

     ]]> 
    </mx:Script> 


    <mx:VBox width="100%" height="100%">   
     <mx:VBox width="100%" height="100%">  
      <mx:Box width="100%" height="100%"> 
        <mx:Canvas width="100%" height="100%">      
         <mx:DataGrid id="gridReportConversions" height="100%" width="100%" dataProvider="{this.dp}" 
         mouseEnabled="true" doubleClickEnabled="true" itemDoubleClick="refererRowDoubleClicked(event)"> 
          <mx:columns> 
            <mx:DataGridColumn width="75" dataField="qty" headerText="Qty" /> 
            <mx:DataGridColumn dataField="referer" headerText="URL" /> 
          </mx:columns> 
         </mx:DataGrid> 
       </mx:Canvas> 
      </mx:Box>  
     </mx:VBox> 
    </mx:VBox> 

</mx:Application> 
1

Перед тем, как использовать propety doubleClickEnabled, мой itemDoubleClick не работает, но когда я установил doubleClickEnabled=true, она работает хорошо, никаких проблем.