4 Replies Latest reply: Feb 3, 2014 5:18 AM by Tim John RSS

    How do I get itemDoubleClick event in spark DataGrid ???

    Mitul Golakiya

      Hello Everyone,

       

      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 ???

        • 1. Re: How do I get itemDoubleClick event in spark DataGrid ???
          tinylion_uk Community Member

          I think, just user gridDoubleClick  then check which row and column in the handler

          • 2. Re: How do I get itemDoubleClick event in spark DataGrid ???
            Mitul Golakiya Community Member

            I had also tried it...

            But the problem is, when you continously click on two rows of DataGrid, it also detect it as double click, even if those two rows are different....

             

            It detects double click on whole grid...

            • 3. Re: How do I get itemDoubleClick event in spark DataGrid ???
              Carol L. Frampton Community Member

              You are correct.  I looked a the code and the comment says it dispatches a double click if the 2nd click is within the  DOUBLE_CLICK_TIME even if the first click was on another cell.

               

              This code figures out if the double-click is a true double-click.

               

              <?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>

              • 4. Re: How do I get itemDoubleClick event in spark DataGrid ???
                Tim John Community Member

                DataGrid now has a property called doubleClickMode (since 4.5 according to the comments). Set that to 'cell' or 'row' to ensure correct behaviour. Oddly, when this value is set as an MXML property, it causes an RTE, as the property doesn't seem to be using the invalidation pattern, but doing it this way will work:

                 

                <s:DataGrid id="resultsGrid" creationComplete="resultsGrid.doubleClickMode = 'row'"/>