Reputation: 402
Recently I am working with Spark DataGrid.
Before I was using AdvancedDataGrid. In that I was capturing itemDoubleClick
event.
But I am not able to find such a event in SparkdataGrid.
So I want to capture double click event on single row of DataGrid.
Some people told that, I have to use my custom ItemRenderer
to do that.
But is there any way to capture itemDoubleClick event in Spark DataGrid without creating custom ItemRenderer ???
Upvotes: 1
Views: 5138
Reputation: 1032
Set selectionMode="singleRow", or other if you prefer, and use gridDoubleClick event.
Upvotes: 0
Reputation: 3448
You do not need a custom ItemRenderer. Just do it like this:
<?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>
Upvotes: 1
Reputation: 11912
In actionscript:
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);
}
Or in MXML:
<s:DataGrid doubleClickEnabled="true"
doubleClick="handleGridDoubleClick(event)" />
'doubleClickEnabled' is 'false' by default so you have to explicitly set it to 'true'
Upvotes: 6