如何在spark DataGrid中获取itemDoubleClick事件?

时间:2012-03-07 07:16:33

标签: flex datagrid air flex4.6 flex-spark

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

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

有些人告诉我,我必须使用我的自定义ItemRenderer来做到这一点。 但有没有办法在Spark DataGrid中捕获itemDoubleClick事件而不创建自定义ItemRenderer ???

3 个答案:

答案 0 :(得分: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'默认为'false',因此您必须将其明确设置为'true'

答案 1 :(得分: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>

答案 2 :(得分:0)

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