Possible Bug: Drag and Drop always removes and adds databound object

5 posts, 0 answers
  1. Seth
    Seth avatar
    9 posts
    Member since:
    Mar 2009

    Posted 18 Jun 2009 Link to this post

    I am using a databound Treeview and I am trying to enable drag and drop so that the user can change the order of a workflow.  This control is deleting then re-adding the object on drag and drop, rather then just changing it's position.  This is creating an edit level mismatch when I try to save the updated the updated treeview.  Will this behavior be changed for new versions of the Treeview?

    Thanks,
    Seth
  2. Miroslav
    Admin
    Miroslav avatar
    922 posts

    Posted 21 Jun 2009 Link to this post

    Hi Seth,

    Unfortunately the .NET collections (and collection interfaces) do not offer a way to move an item. The TreeView just casts the ItemsSource or  Items collection (whichever is in use) to an IList and then removes the item from the source collection and adds it to the destination collection. With the current collection implementations the most we can do is replace an item, but that does not help much during drag/drop where you indeed move an item.

    If you are using a custom items source that does support moving items, the Q2 version of the TreeView will allow you to customize how the TreeView reacts to a successful drag/drop.

    We will appreciate any feedback on how we can improve the default behavior.

    Regards,
    Miroslav
    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.
  3. DevCraft banner
  4. Kenneth
    Kenneth avatar
    70 posts
    Member since:
    Feb 2008

    Posted 16 Jan 2010 Link to this post

    Have similar problem.

    When moving nodes within a treeview - works as needed. When moving a node to a different control (a gridview) I do not want to remove the item from collection associated with the treeview, I need to copy the object and insert it into the collection associated with the gridview.

    Basically, I need to customize the behavior under certain circumstances, to make the result of the dragdrop to be a copy, not a move.

    Don't expect there to be an easy answer, but have attempted to inspect the state of the various events to see if I could find a point where the drag source and drop destination are known - before the the item is removed from source collection. My idea was that I could get the index of the item, copy it, and reinsert it at the appropriate point. But was not able to find an event that gave me that chance.

    Is there are way to accomplish the above, or perhaps a better way to customize the dragdrop behavior to accomplish this?

    Thanks,
    Ken
  5. Ivan
    Admin
    Ivan avatar
    519 posts

    Posted 21 Jan 2010 Link to this post

    Hello Kenneth,

    I am sorry for this very late response.

    Please keep an eye on this thread - we will prepare an example and will post it here.
     
    Thank you for your patience

    Regards,
    Ivan
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  6. Ivan
    Admin
    Ivan avatar
    519 posts

    Posted 25 Jan 2010 Link to this post

    Hi Kenneth,

    If you want to have a copy-drag you should mark the event as Handled in order to prevent removing of the source item:
     
    private void radTreeView_PreviewDragEnded( object sender, RadTreeViewDragEndedEventArgs e )
    {
       e.Handled = true;
    }
     
    The copy-case is described in the How to Implement Copy Drag article. Please follow it and let us know if you have other questions.


    Best wishes,
    Ivan
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
Back to Top
DevCraft banner