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>
<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;
}
}