SourceDragNode.Value on server is wrong after client-side insert of node

1 posts, 0 answers
  1. Brent Hetland
    Brent Hetland avatar
    61 posts
    Member since:
    Aug 2009

    Posted 09 Nov 2012 Link to this post


    I am using version 2011.3.1305.35 of the ASP.NET for AJAX controls.

    When I insert a treeview node using client side code, and then drag and drop it, the server side code's SourceDragNode.Value is wrong.  It is the value of the node that is directly ABOVE my inserted node.

    I am doing the following:
    1)  Using a command on a context menu that uses javascript and an asp ScriptManager and a ServiceReference to insert a node into the treeview.  The javascript that runs in the context menu clicking event is:

    selectedFolderParentID = treeNode.get_value();
    var UserIDHiddenField = document.getElementById('=UserIDHiddenField.ClientID;');
    Portal.UserFavoritesWS.AddFavoriteFolderReturnNode(UserIDHiddenField.value, selectedFolderParentID, folderName, OnFolderInsertCompleted);

    2) Then in the callback function (OnFolderInsertCompleted - which is run when the web service returns), I insert the node into the tree at the correct location and put it into edit mode:

    function OnFolderInsertCompleted(nodeData) {
    var tree = $find("=Me.SavedFavoritesTreeView.ClientID");
    var node = new Telerik.Web.UI.RadTreeNode();
    var folderName = nodeData.Text;
    var folderID = nodeData.Value;
    node.get_attributes().setAttribute("ObjectTypeID", "80");
    var parentNode = tree.findNodeByValue(selectedFolderParentID);
    if (parentNode != tree && !parentNode.get_expanded()) {
    if (node)
       setTimeout(function () { node.startEdit() }, 20);}

    ALL OF THAT WORKS, and I can see that the node's value is indeed the correct ID that was sent back from the node data by the web service.

    3) However, if I then immediately Drag and Drop that node (before any other server side page refresh or postback), the server-side SourceDragNode.Value is NOT from the node I've dragged.  It is the value from the node directly ABOVE the node I've dragged.

    The result of this, since I have the wrong SourceDragNode.Value, is that the wrong node is being dragged and dropped!

    Of course on any full page refresh or postback the SourceDragNode.Value is correct and drag and drop works find because I rebind my treeview on the server, so everything is property sync'ed up at that time...  But it seems like if I do the database insert from the client and also add the node from the client, the server code isn't yet aware of that node (like it is accessing the wrong index item or something).

    Any Ideas on what I'm doing wrong or how I can fix this?

Back to Top