Please try with the below code snippet.
ASPX
<telerik:GridTableView Name="Child" OnRowDrop="radGridRoutes_RowDrop" ClientSettings-AllowRowsDragDrop="true" DataKeyNames="ID,DisplayOrder,RouteID" Width="100%" runat="server" CommandItemDisplay="Top" Name="Stops" AllowFilteringByColumn="false">
ASPX.CS
protected void radGridRoutes_RowDrop(object sender, GridDragDropEventArgs e)
{
GridDataItem RowDragged = e.DraggedItems.FirstOrDefault();
if (RowDragged.OwnerTableView.Name == "Child")
{
// Row Dragged from child Grid
e.DraggedItems[0].GetDataKeyValue("DisplayOrder");
int OriginalID = Convert.ToInt32(RowDragged.GetDataKeyValue("ID"));
int OriginalOrder = Convert.ToInt32(RowDragged.GetDataKeyValue("DisplayOrder"));
int RouteID = Convert.ToInt32(RowDragged.GetDataKeyValue("RouteID"));
// You can also check same thing for Drop Item
int DestID = Convert.ToInt32(e.DestDataItem.GetDataKeyValue("ID")); int DestOrder = Convert.ToInt32(e.DestDataItem.GetDataKeyValue("DisplayOrder"));
UpdateOrder(OriginalID, OriginalOrder, DestID, RouteID);
}
}
Update 1:
If above code is not working then please try with the below code snippet.
Method 1:
ASPX
<telerik:GridTableView Name="Child" ClientDataKeyNames="ID,DisplayOrder,RouteID" OnRowDrop="radGridRoutes_RowDrop" ClientSettings-AllowRowsDragDrop="true" DataKeyNames="ID,DisplayOrder,RouteID" Width="100%" runat="server" CommandItemDisplay="Top" Name="Stops" AllowFilteringByColumn="false">
......
......
<ClientSettings>
<ClientEvents OnRowDragStarted="RowDragStarted" />
</ClientSettings>
JS Code
function RowDragStarted(sender, eventArgs) {
var tblvew = eventArgs.get_tableView().get_name();
if(tblvew == null || tblvew == undefined || tblvew != 'Child')
{
eventArgs.set_cancel(true);
}
}
OR
function RowDragStarted(sender, eventArgs) {
var route = eventArgs.getDataKeyValue("RouteID");
if(route == null || route == '')
{
eventArgs.set_cancel(true);
}
}
Let me know if any concern.