2008-11-18 11 views
1

Je suis en train de faire un simple DataGrid dans Flex avec un événement doubleclick, mais je ne peux pas itemDoubleClick au feu:Impossible d'obtenir l'événement itemDoubleClick travailler dans Flex (même avec 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> 

Si je utilisez l'événement itemClicked puis l'événement est levé correctement. Quand je recherche ce problème, je trouve beaucoup de gens disant 'vous devez définir doubleClickEnabled=true, mais j'ai fait cela et cela ne fonctionne toujours pas.

Ce contrôle est imbriqué dans plusieurs niveaux de VBox et d'autres conteneurs. Sûrement je n'ai pas besoin de mettre doubleClickEnabled sur chacun de ces conteneurs puis-je?

Juste pour préciser comment je l'ai testé - j'ai une boîte d'alerte dans mon gestionnaire d'événements refererRowDoubleClicked et il ne fait jamais montré quand j'utilise itemDoubleClick

+0

Veuillez poster votre fonction de gestionnaire d'événements ... Je parie que c'est un tir, mais il y a une erreur dans la fonction du gestionnaire qui donne l'impression qu'elle ne se déclenche pas. – mmattax

+0

@mmattax - ma fonction contient Alert.show ("atteint la fonction d'événement") et le paramètre est event: Event. si je change itemDoubleClick à itemClick alors je vois le message –

Répondre

1

Simon,

j'ai pu obtenir votre code pour , aucun problème. Enveloppé dans plusieurs couches de conteneurs qui n'ont pas doubleClickEnabled défini sur true, pour voir si c'était un problème, mais il ne semble pas l'être.

Je me demande si l'un des parents cause un problème d'une façon ou d'une autre. Serait-il possible de publier une plus grande partie du code?

Voici ce que je courais pour tester cela avec:

<?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> 
+0

merci beaucoup d'essayer cela. Je suppose que je vais devoir le prendre étape par étape jusqu'à la «chaîne de conteneurs» et voir si je peux le faire fonctionner. Je voulais juste faire sûr au début, je ne faisais pas quelque chose de stupide –

1

Avant-je utiliser le propety doubleClickEnabled, mon itemDoubleClick ne fonctionne pas, mais quand je mets doubleClickEnabled=true, ça marche bien, pas de problème.