最近我正在使用Spark DataGrid。在我使用AdvancedDataGrid之前。在那我正在捕捉itemDoubleClick
事件。但我无法在 SparkdataGrid 中找到这样的事件。
所以我想在 DataGrid 的单行上捕获双击事件。
有人说,我必须用我的习惯ItemRenderer
来做到这一点。但是有什么方法可以在 Spark DataGrid 中捕获 itemDoubleClick 事件而不创建自定义 ItemRenderer ???
最近我正在使用Spark DataGrid。在我使用AdvancedDataGrid之前。在那我正在捕捉itemDoubleClick
事件。但我无法在 SparkdataGrid 中找到这样的事件。
所以我想在 DataGrid 的单行上捕获双击事件。
有人说,我必须用我的习惯ItemRenderer
来做到这一点。但是有什么方法可以在 Spark DataGrid 中捕获 itemDoubleClick 事件而不创建自定义 ItemRenderer ???
在动作脚本中:
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”默认为“假”,因此您必须明确将其设置为“真”
您不需要自定义 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>
设置 selectionMode="singleRow" 或其他,如果您愿意,并使用 gridDoubleClick 事件。