2012-03-07 16 views
1

最近我在和Spark DataGrid一起工作。 在我使用之前AdvancedDataGrid。在那我捕獲itemDoubleClick事件。 但我無法在SparkdataGrid中找到這樣的事件。如何在spark DataGrid中獲取itemDoubleClick事件?

所以我想在DataGrid的單行上捕獲雙擊事件。

有人告訴我,我必須用我的自定義ItemRenderer來做到這一點。 但有沒有什麼辦法可以捕獲Spark DataGrid中的itemDoubleClick事件,而無需創建自定義ItemRenderer?

回答

6

在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); 
} 

或者在MXML:

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

'doubleClickEnabled' 默認情況下 '假',所以你必須明確地將其設置爲 '真'

+2

我也試了一下...... 但問題是,當你汽車無點擊DataGrid中的兩行,它也將其檢測爲雙擊,即使這兩個行是不同的.... 它檢測到整個網格上的雙擊... – 2012-03-07 10:44:16

+1

是的,但只有當你點擊兩行時纔會發生,對嗎?您可能瘋狂地點擊以測試您的界面,但在現實生活中幾乎沒有發生過。如果你真的想要解決這個問題,你最好的選擇就是自定義的ItemRenderer。 – RIAstar 2012-03-07 10:57:29

+0

終於我管理它與自定義Itemrenderer的幫助... – 2012-03-19 13:08:13

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> 
+0

在稍後的SDK中有selectionMode屬性。 – Nemi 2017-12-13 19:29:38

0

Set selectionMode =「singleRow」,或其他如果你喜歡,並使用gridDoubleClick事件。

相關問題