Не удается получить событие itemDoubleClick для работы во Flex (даже с doubleClickEnabled = true) - PullRequest
1 голос
/ 18 ноября 2008

Я пытаюсь создать простую сетку данных в Flex с событием двойного щелчка, но не могу получить itemDoubleClick для запуска:

<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

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

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

1 голос
/ 21 ноября 2008

Simon

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

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

Вот что я запускал, чтобы проверить это:

<?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>
...