
                                            John W Wilson
                                            
                                    
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                        
                                        John W Wilson
                                        asked on 15 Jul 2009, 01:07 PM
                                    
                                This has to be simple, but I'm stumped.
I want to drag and drop onto a RadGridView.  I can determine the mouse position of where I have dropped:| Dim dropLoc As Point = grdDeliveries.PointToClient(New Point(e.X, e.Y)) | 
But I'm stumped as to determine which row this is  as GridDataRowInfo does not give me the row index, or I can't work out how to get it. 
Nor can I work out which part of the row I've dropped on.  (column header, row header, cell, etc.) There is an enumeration 'GridViewHitTestType', but I can't work out how to use it.  HitTest(x,y) just gives true or false.
In other words, what is the equivalent of the Windows DataGridView.HitTestInfo() within the Telerik framework?
7 Answers, 1 is accepted
0
                                Hi John W Wilson,
You can use the ElementTree.GetElementAtPoint method for this purpose. Here is a sample:
    
I hope this helps. If you need further assistance, don't hesitate to write us.
 
Sincerely yours,
Jack
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
                                        You can use the ElementTree.GetElementAtPoint method for this purpose. Here is a sample:
| Private Sub radGridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) | 
| Dim cell As GridCellElement = TryCast(Me.radGridView1.ElementTree.GetElementAtPoint(e.Location), GridCellElement) | 
| If cell IsNot Nothing Then | 
| '... | 
| End If | 
| End Sub | 
I hope this helps. If you need further assistance, don't hesitate to write us.
Sincerely yours,
Jack
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
                                
                                                    John W Wilson
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 15 Jul 2009, 06:37 PM
                                            
                                        Thanks Jack,
                                        That works.  I knew it would be simple.  It's just knowing where to look!
John
0
                                
                                                    John W Wilson
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 16 Jul 2009, 10:03 AM
                                            
                                        Actually it didn't work quite as well as I'd hoped.  It gave me the correct return, but never hit the grid as it seemed to give absolute (screen) co-ordinates rather than grid related co-ordinates.  I eventually used    
    
                                        | Private Sub grdDeliveries_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles grdDeliveries.DragDrop | 
| .... | 
| Dim dropLoc As New System.Drawing.Point(e.X, e.Y) | 
| dropLoc.X = Me.grdDeliveries.MousePosition.X | 
| dropLoc.Y = Me.grdDeliveries.MousePosition.Y | 
| ...... | 
which does work.  However, this gives me the warning
| 'Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated' | 
Any suggestions as to what I've done (am doing) wrong?
0
                                
                                                    John W Wilson
                                                    
                                            
    Top achievements
    
            
                 Rank 1
                Rank 1
            
    
                                                
                                                answered on 16 Jul 2009, 10:34 AM
                                            
                                        And Solved!!
    
            
                                        | Dim scrpt As New System.Drawing.Point(e.X, e.Y) | 
| ' Check what we are over | 
| Dim dropLoc As System.Drawing.Point = grdDeliveries.PointToClient(scrpt) | 
| Dim cell As Telerik.WinControls.UI.GridCellElement = TryCast(grdDeliveries.ElementTree.GetElementAtPoint(dropLoc), Telerik.WinControls.UI.GridCellElement) | 
I'd missed the .PointToScreen and .PointToClient properties.  The event arguments e come in as screen co-ordinates, which then need to be converted to Client (i.e. grid) co-ordinates.  
0
                                Accepted
Hi John,
I am glad to hear that you have found a solution for this issue. If you have any other questions, don't hesitate to write us back.
Feel free to mark this thread as answered.
 
All the best,
Jack
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
                                        I am glad to hear that you have found a solution for this issue. If you have any other questions, don't hesitate to write us back.
Feel free to mark this thread as answered.
All the best,
Jack
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
                                
                                                    Mercell
                                                    
                                            
    Top achievements
    
            
                 Rank 2
                Rank 2
            
    
                                                
                                                answered on 17 Feb 2011, 05:15 PM
                                            
                                        Hi,
I tried using radGridView.ElementTree.GetElementAtPoint(point)and it works fine when clicking on a textboxcolumn but when clicking on a checkboxcolumn or commandcolumn the returned cell element is null.
I need to determine whether the user doubleclicked a row/cell or outside a cell (but still within the grid).
How do I do this when the grid contains checkboxes or commandbuttons?
Regards,
Brian
                                        I tried using radGridView.ElementTree.GetElementAtPoint(point)and it works fine when clicking on a textboxcolumn but when clicking on a checkboxcolumn or commandcolumn the returned cell element is null.
I need to determine whether the user doubleclicked a row/cell or outside a cell (but still within the grid).
How do I do this when the grid contains checkboxes or commandbuttons?
Regards,
Brian
0
                                Hello Mercell,
I understand. This is because the checkbox itself is an element and the GetElementAtPoint method returns it. You have to check whether some of its parent elements is a GridCellElement. Please consider the following code:
Should you have any further questions, do not hesitate to contact me.
 
Kind regards,
Jack
the Telerik team
                                        I understand. This is because the checkbox itself is an element and the GetElementAtPoint method returns it. You have to check whether some of its parent elements is a GridCellElement. Please consider the following code:
Private Sub radGridView1_MouseDown(sender As Object, e As MouseEventArgs)    Dim element As RadElement = Me.radGridView1.ElementTree.GetElementAtPoint(e.Location)    Dim cell As GridCellElement    While element IsNot Nothing        cell = TryCast(element, GridCellElement)        If cell IsNot Nothing Then            Exit While        End If        element = element.Parent    End While    ' ...End SubShould you have any further questions, do not hesitate to contact me.
Kind regards,
Jack
the Telerik team
