最近我正在使用 Spark DataGrid 。
在我使用 AdvancedDataGrid 之前。我正在捕捉itemDoubleClick
事件。
但是我无法在SparkdataGrid中找到这样的事件。
所以我想在单行DataGrid上捕获双击事件。
有些人告诉我,我必须使用我的自定义ItemRenderer
来做到这一点。
但有没有办法在Spark DataGrid中捕获itemDoubleClick事件而不创建自定义ItemRenderer ???
答案 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事件。