1

最近我正在使用Spark DataGrid。在我使用AdvancedDataGrid之前。在那我正在捕捉itemDoubleClick事件。但我无法在 SparkdataGrid 中找到这样的事件。

所以我想在 DataGrid 的单行上捕获双击事件。

有人说,我必须用我的习惯ItemRenderer来做到这一点。但是有什么方法可以在 Spark DataGrid 中捕获 itemDoubleClick 事件而不创建自定义 ItemRenderer ???

4

3 回答 3

6

在动作脚本中:

myDataGrid.doubleClickEnabled = true;
myDataGrid.addEventListener(GridEvent.GRID_DOUBLE_CLICK, handleGridDoubleClick);

private function handleGridDoubleClick(event:GridEvent):void {
    trace(event.rowIndex, event.columIndex);
    trace(event.column, event.item);
}

或者在 MXML 中:

<s:DataGrid doubleClickEnabled="true" 
            doubleClick="handleGridDoubleClick(event)" />

“doubleClickEnabled”默认为“假”,因此您必须明确将其设置为“真”

于 2012-03-07T08:40:06.797 回答
1

您不需要自定义 ItemRenderer。这样做:

<?xml version="1.0" encoding="utf-8"?>

<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[
            import spark.events.GridEvent;

            private var lastColumnIndex:int = -1;
            private var lastRowIndex:int = -1;

            // set this to change the double click time   
            //mx_internal::event.grid.DOUBLE_CLICK_TIME = 480;  // ms

            protected function dataGrid_gridClickHandler(event:GridEvent):void
            {               
                trace("click on this cell", event.rowIndex, event.columnIndex);

                lastRowIndex = event.rowIndex;
                lastColumnIndex = event.columnIndex;
            }

            protected function dataGrid_gridDoubleClickHandler(event:GridEvent):void
            {
               if (event.rowIndex == lastRowIndex && event.columnIndex == lastColumnIndex)
                   trace("a real double click on this cell", event.rowIndex, event.columnIndex);
               else
                   trace("this is a gridClick on another cell", event.rowIndex, event.columnIndex);

               lastRowIndex = event.rowIndex;
               lastColumnIndex = event.columnIndex;
            }

        ]]>
    </fx:Script>


        <s:DataGrid id="dataGrid" requestedRowCount="5" verticalCenter="0" horizontalCenter="0"
                     doubleClickEnabled="true"
                      gridClick="dataGrid_gridClickHandler(event)"
                      gridDoubleClick="dataGrid_gridDoubleClickHandler(event)">
            <s:ArrayCollection>
                <s:DataItem key="1000" name="Abrasive" price="100.11" call="false"/>
                <s:DataItem key="1001" name="Brush" price="110.01" call="true"/>
                <s:DataItem key="1002" name="Clamp" price="120.02" call="false"/>
                <s:DataItem key="1003" name="Drill" price="130.03" call="true"/>
                <s:DataItem key="1004" name="Epoxy" price="140.04" call="false"/>
                <s:DataItem key="1005" name="File" price="150.05" call="true"/>
                <s:DataItem key="1006" name="Gouge" price="160.06" call="false"/>
                <s:DataItem key="1007" name="Hook" price="170.07" call="true"/>
                <s:DataItem key="1008" name="Ink" price="180.08" call="false"/>
                <s:DataItem key="1009" name="Jack" price="190.09" call="true"/>            
            </s:ArrayCollection>
        </s:DataGrid>
</s:Application>
于 2013-12-05T19:38:13.157 回答
0

设置 selectionMode="singleRow" 或其他,如果您愿意,并使用 gridDoubleClick 事件。

于 2017-12-13T19:32:56.483 回答