1

我正在尝试使用双击事件在 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

4

2 回答 2

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>
于 2008-11-21T18:44:22.860 回答
1

在我使用属性 doubleClickEnabled 之前,我的 itemDoubleClick 不起作用,但是当我设置时doubleClickEnabled=true,它工作得很好,没问题。

于 2010-11-16T09:12:40.787 回答