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

[Solved] Drag and Drop unreliable when in RadPane

1 Answer 209 Views
TreeView
This is a migrated thread and some comments may be shown as answers.
thepilsbury
Top achievements
Rank 1
thepilsbury asked on 17 Jan 2008, 05:14 PM
HI,

I have a treeview within a rad pane. The radpane is the left pane within a RadSplitter of two panes with a plitterbar between them.

The drag and drop functionality I copied from the demo. It works fine on after initial page load however if you resize the pane then the drag and drop functionlaity stops working.

Help!

ASPX:

<form id="form1" runat="server">
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
    <div>
        &nbsp;<telerik:RadSplitter ID="RadSplitter1" runat="server" Items-Capacity="0" Orientation="Vertical"
            ResizeMode="AdjacentPane" SplitBarsSize="">
            <telerik:RadPane ID="RadPane1" runat="server">
    <telerik:RadTreeView id="RadTreeView1" runat="server" Width="100%" Height="58%" Skin="Outlook" LoadingStatusPosition="BeforeNodeText" AllowNodeEditing="True" EnableDragAndDrop="True" EnableDragAndDropBetweenNodes="True" OnNodeDrop="RadTreeView1_HandleDrop">
                                <Nodes>
                                    <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Content">
                                        <Nodes>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Introduction">
                                            </telerik:RadTreeNode>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Standards of Conduct">
                                                <Nodes>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Employees">
                                            </telerik:RadTreeNode>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Customers and Suppliers">
                                            </telerik:RadTreeNode>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Worldwide Communities">
                                            </telerik:RadTreeNode>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Competitors">
                                            </telerik:RadTreeNode>
                                                    <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Shareholders, Assets and Company Records">
                                                    </telerik:RadTreeNode>
                                                </Nodes>
                                            </telerik:RadTreeNode>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Compliance">
                                            </telerik:RadTreeNode>
                                            <telerik:RadTreeNode runat="server" ExpandMode="ClientSide" Text="Reporting Violations">
                                            </telerik:RadTreeNode>
                                        </Nodes>
                                    </telerik:RadTreeNode>
                                </Nodes>
                                <CollapseAnimation Duration="100" Type="OutQuint"  />
                                <ExpandAnimation Duration="100" Type="OutQuart"  />
                            </telerik:RadTreeView>
            </telerik:RadPane>
            <telerik:RadSplitBar ID="RadSplitBar1" runat="server" />
            <telerik:RadPane ID="RadPane2" runat="server" EnableEmbeddedBaseStylesheet="False"
                EnableEmbeddedSkins="False" Height="" Index="0" Scrolling="Both" Skin="" Width="">
            </telerik:RadPane>
        </telerik:RadSplitter>
    </div>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        </telerik:RadAjaxManager>
    </form>

C#:

    protected void RadTreeView1_HandleDrop(object sender, Telerik.Web.UI.RadTreeNodeDragDropEventArgs e)
    {
        RadTreeNode sourceNode = e.SourceDragNode;
        RadTreeNode destNode = e.DestDragNode;
        RadTreeViewDropPosition dropPosition = e.DropPosition;

        string result = "";

        if (destNode != null)//drag&drop is performed between trees
        {
            //if (this.ChbBetweenNodes.Checked)//dropped node will at the same level as a destination node
            //{
            if (sourceNode.TreeView.SelectedNodes.Count <= 1)
            {
                result += "<b>" + sourceNode.Text + "</b>" + ";";
                PerformDragAndDrop(dropPosition, sourceNode, destNode);
            }
            else if (sourceNode.TreeView.SelectedNodes.Count > 1)
            {
                foreach (RadTreeNode node in sourceNode.TreeView.SelectedNodes)
                {
                    result += "<b>" + node.Text + "</b>" + ";";
                    PerformDragAndDrop(dropPosition, node, destNode);
                }
            }
            //}
            //else//dropped node will be a sibling of the destination node
            //{
                //if (sourceNode.TreeView.SelectedNodes.Count <= 1)
                //{

                //    if (!sourceNode.IsAncestorOf(destNode))
                //    {
                //        result += "<b>" + sourceNode.Text + "</b>" + ";";
                //        sourceNode.Owner.Nodes.Remove(sourceNode);
                //        destNode.Nodes.Add(sourceNode);
                //    }
                //}
                //else if (sourceNode.TreeView.SelectedNodes.Count > 1)
                //{
                //    foreach (RadTreeNode node in RadTreeView1.SelectedNodes)
                //    {
                //        if (!node.IsAncestorOf(destNode))
                //        {
                //            result += "<b>" + node.Text + "</b>" + ";";
                //            node.Owner.Nodes.Remove(node);
                //            destNode.Nodes.Add(node);
                //        }
                //    }
                //}
            //}

            destNode.Expanded = true;
            //DragMessage.Text = "You dragged node(s)" + result + " onto node <b>" + destNode.Text + "</b>";
            sourceNode.TreeView.ClearSelectedNodes();
        }
        //else if (e.HtmlElementID == DataGrid1.ClientID)
        //{
        //    DataTable dt = (DataTable)Session["DataTable"];
        //    foreach (RadTreeNode node in e.DraggedNodes)
        //    {
        //        AddRowToGrid(dt, node);
        //    }
        //}
    }

    private static void PerformDragAndDrop(RadTreeViewDropPosition dropPosition, RadTreeNode sourceNode, RadTreeNode destNode)
    {
        if (sourceNode.Equals(destNode) || sourceNode.IsAncestorOf(destNode))
        {
            return;
        }
        sourceNode.Owner.Nodes.Remove(sourceNode);

        switch (dropPosition)
        {
            case RadTreeViewDropPosition.Over:
                // child
                if (!sourceNode.IsAncestorOf(destNode))
                {
                    destNode.Nodes.Add(sourceNode);
                }
                break;

            case RadTreeViewDropPosition.Above:
                // sibling - above     
                destNode.InsertBefore(sourceNode);
                break;

            case RadTreeViewDropPosition.Below:
                // sibling - below
                destNode.InsertAfter(sourceNode);
                break;
        }
    }

1 Answer, 1 is accepted

Sort by
0
Dimitar Milushev
Telerik team
answered on 21 Jan 2008, 09:15 AM
Hi thepilsbury,

We tested your scenario with the Service Pack 1 release of Telerik.Web.UI and everything seemed to work fine, both before and after resizing the pane. We tested IE6, IE7 and FireFox 2.

Please let us know if we are missing something about your scenario that will help us reproduce the issue on our side.

All the best,
Dimitar Milushev
the Telerik team

Instantly find answers to your questions at the new Telerik Support Center
Tags
TreeView
Asked by
thepilsbury
Top achievements
Rank 1
Answers by
Dimitar Milushev
Telerik team
Share this question
or