This is a migrated thread and some comments may be shown as answers.

Rad Grid Drag and Drop - Dragged Item Empty

1 Answer 139 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Jesse
Top achievements
Rank 1
Jesse asked on 23 Jan 2012, 06:46 PM

I am working off of the demo code for Rad Grid drag and drop functionality, and I cannot seem to get any values in the DraggedItems collection on the RowDrop server event. 

In the following code, e.HtmlElement = "" and e.DraggedItems.Count = 0.  Has anyone run into the same issue?  Am I missing something here.  I do not need to use any of the client events, so nothing is being affected by OnRowDropping.  I am basically just dragging to reorder within the grid.  Any help would be appreciated.

 FYI, this grid is within a user control within an ASP.NET Ajax Tab Control, not the telerik tab control.  The UI does not reflect the item that I am dragging, when I am dragging it.  It just shows an thin line (like an empty row).  If I drag off of the grid, then select another item, and drag again, it will show an item being dragged and the code below works fine, then if I try again it does not.

 

Protected Sub grdQuoteDetails_RowDrop(ByVal sender As Object, ByVal e As GridDragDropEventArgs)
    If String.IsNullOrEmpty(e.HtmlElement) Then
        If e.DraggedItems(0).OwnerGridID = grdQuoteDetails.ClientID Then
            ' items are drag from quote details 
            If e.DestDataItem IsNot Nothing AndAlso e.DestDataItem.OwnerGridID = grdQuoteDetails.ClientID Then
                'reorder items in pending grid
                Dim pendingDetails As IList(Of Model.QuoteDetail)
                pendingDetails = PendingQuoteDetails
                Dim quoteDetail As Model.QuoteDetail = GetQuoteDetail(pendingDetails, DirectCast(e.DestDataItem.GetDataKeyValue("ID"), Integer))
                Dim destinationIndex As Integer = pendingDetails.IndexOf(quoteDetail)
                If ((e.DropPosition = GridItemDropPosition.Above) _
                        AndAlso (e.DestDataItem.ItemIndex > e.DraggedItems(0).ItemIndex)) Then
                    destinationIndex = (destinationIndex - 1)
                End If
                If ((e.DropPosition = GridItemDropPosition.Below) _
                        AndAlso (e.DestDataItem.ItemIndex < e.DraggedItems(0).ItemIndex)) Then
                    destinationIndex = (destinationIndex + 1)
                End If
                Dim detailsToMove As New List(Of Model.QuoteDetail)()
                For Each draggedItem As GridDataItem In e.DraggedItems
                    Dim tmpDetail As Model.QuoteDetail = GetQuoteDetail(pendingDetails, DirectCast(draggedItem.GetDataKeyValue("ID"), Integer))
                    If tmpDetail IsNot Nothing Then
                        detailsToMove.Add(tmpDetail)
                    End If
                Next
                For Each detailToMove As Model.QuoteDetail In detailsToMove
                    pendingDetails.Remove(detailToMove)
                    pendingDetails.Insert(destinationIndex, detailToMove)
                Next
                PendingQuoteDetails = pendingDetails
                grdQuoteDetails.Rebind()
            End If
        End If
    End If
End Sub

1 Answer, 1 is accepted

Sort by
0
Andrey
Telerik team
answered on 26 Jan 2012, 03:47 PM
Hello,

Your code looks generally correct, could you share additional information about your project, like RadGrid declaration with the respective event handlers and your Ajax settings?

Regards,
Andrey
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
Tags
Grid
Asked by
Jesse
Top achievements
Rank 1
Answers by
Andrey
Telerik team
Share this question
or