am balaji
I Have used Rad Treeview encapsulated in a Rad ajax panel in my Project.
Here i do different transaction such as drag and drop,context menu,node click and so on.
But everything under Rad ajax panel.
Actually i have Treeview path stored as a datasource in an array.
Am assigning the Path and Storing the Value in Rad Tree node while clicking and dragging that node to destination node.
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1" EnableAJAX="false" EnableHistory="false" > |
<telerik:RadTreeView ID="Reportview" runat="server" AllowNodeEditing="True" |
EnableDragAndDrop="True" OnNodeExpand="RadTreeview1_NodeExpand" OnContextMenuItemClick="RadTreeView1_ContextMenuItemClick" |
OnClientNodeClicked="nodeClicked" |
OnClientContextMenuShowing="onClientContextMenuShowing" |
OnNodeEdit="RadTreeView1_NodeEdit" OnNodeDrop="RadTreeView1_HandleDrop" > |
<ContextMenus> |
<telerik:RadTreeViewContextMenu Skin="Outlook" ID="FolderContextMenu" runat="server"> |
<%-- <WebServiceSettings Method="LoadFolderitems" Path="WebService.asmx" /> |
<WebServiceSettings Method="LoadReportitems" Path="WebService.asmx" />--%> |
<Items> |
<telerik:RadMenuItem Value="Create Folder" Text="Create Folder" ImageUrl="img/Outlook/10.gif"> |
</telerik:RadMenuItem> |
<telerik:RadMenuItem Value="Copy Policies" Text="Copy Policies"> |
</telerik:RadMenuItem> |
<telerik:RadMenuItem Value="Paste Policies" Text="Paste Policies" Enabled="false"> |
</telerik:RadMenuItem> |
</Items> |
</telerik:RadTreeViewContextMenu> |
<telerik:RadTreeViewContextMenu Skin="Outlook" ID="ReportContextMenu" runat="server"> |
<%-- <WebServiceSettings Method="LoadFolderitems" Path="WebService.asmx" /> |
<WebServiceSettings Method="LoadReportitems" Path="WebService.asmx" />--%> |
<Items> |
<telerik:RadMenuItem Value="Copy Policies" Text="Copy Policies"> |
</telerik:RadMenuItem> |
<telerik:RadMenuItem Value="Paste Policies" Text="Paste Policies" Enabled="false"> |
</telerik:RadMenuItem> |
</Items> |
</telerik:RadTreeViewContextMenu> |
</ContextMenus> |
<Nodes> |
<telerik:RadTreeNode runat="server" Expanded="True" ExpandMode="ServerSideCallBack" |
Text="Root" Value="/" ImageUrl="~/images/12.gif"> |
</telerik:RadTreeNode> |
</Nodes> |
</telerik:RadTreeView> |
<input type="hidden" id="status" runat="server" /> |
<input type="hidden" id="draggednodepath" runat="server" /> |
<input type="hidden" id="dropstatus" runat="server" /> |
<input type="hidden" id="Nodeid" runat="server" /> |
</telerik:RadAjaxPanel> |
In This Treeview i deal with lot of Operations such as drag and drop mcontext menu items as you can see in the Above Respective events. |
OnNodeExpand="RadTreeview1_NodeExpand" OnContextMenuItemClick="RadTreeView1_ContextMenuItemClick" |
OnClientNodeClicked="nodeClicked" |
OnClientContextMenuShowing="onClientContextMenuShowing" |
Here is the RadHandle_Drop Event where i assign Node value the Path.
protected void RadTreeView1_HandleDrop(object sender, RadTreeNodeDragDropEventArgs e) |
{ |
RadTreeNode sourceNode = e.SourceDragNode; |
RadTreeNode destNode = e.DestDragNode; |
RadTreeViewDropPosition dropPosition = e.DropPosition; |
try |
{ |
if (sourceNode.TreeView.SelectedNodes.Count <= 1) |
{ |
if (destNode.ToolTip != "Report") |
{ |
if (!sourceNode.IsAncestorOf(destNode)) |
{ |
string srcvalue = sourceNode.FullPath; |
string target = destNode.FullPath; |
if (!target.Contains(destNode.Text)) |
{ |
targettarget = target + destNode.Text; |
} |
if (srcvalue.StartsWith("Root")) |
{ |
srcvaluesrcvalue = srcvalue.Replace("Root", ""); |
//srcvaluesrcvalue=srcvalue.Substring(0,srcvalue.LastIndexOf("/")); |
} |
Uri uri = new Uri(Request.Cookies["reporturl"].Values["uri"].ToString()); |
rs.Url = Request.Cookies["reporturl"].Values["uri"].ToString(); |
NetworkCredential netCredential = new NetworkCredential(Request.Cookies["Reportcredent"].Values["Username"].ToString(), Request.Cookies["Reportcredent"].Values["pwd"].ToString(), Request.Cookies["Reportcredent"].Values["Domain"].ToString()); |
ICredentials credential = netCredential.GetCredential(uri, "Basic"); |
rs.Credentials = credential; |
if (target.LastIndexOf("/") > 0) |
{ |
targettarget = target + "/" + srcvalue.Substring(srcvalue.LastIndexOf("/")); |
targettarget = target.Replace("//", "/").Replace("//", "/"); |
targettarget = target.Replace("Root", ""); |
if (sourceNode.ToolTip == "Folder") |
{ |
Cache["NodeType"] = "Folder"; |
} |
else |
{ |
Cache["NodeType"] = "Report"; |
} |
} |
else |
{ |
if (target.StartsWith("Root")) |
{ |
targettarget = target.Replace("Root", ""); |
} |
target = srcvalue.Substring(srcvalue.LastIndexOf("/")); |
welcomemsg.Visible = false; |
if (sourceNode.ToolTip == "Folder") |
{ |
Cache["NodeType"] = "Folder"; |
} |
else |
{ |
Cache["NodeType"] = "Report"; |
} |
} |
rs.MoveItem(srcvalue, target); |
sourceNode.Owner.Nodes.Remove(sourceNode); |
destNode.Nodes.Add(sourceNode); |
draggednodepath.Value = target; |
destNode.Value = target; |
destNode.Category = target; |
destNode.Expanded = true; |
dropstatus.Value = "true"; |
} |
} |
else |
{ |
welcomemsg.Visible = true; |
Addpane.Visible = false; |
rightpane.Visible = false; |
rightpanepolicies.Visible = false; |
welcomemsg.Text = "You cant Drag And Drop Report to a Report"; |
} |
} |
} |
catch (Exception ex) |
{ |
if (ex.Message.Contains("already exists")) |
{ |
welcomemsg.Visible = true; |
Addpane.Visible = false; |
rightpane.Visible = false; |
rightpanepolicies.Visible = false; |
welcomemsg.Text = "There cannot be a Report with the Same name in a Folder"; |
} |
else |
{ |
Util.LogException(ex); |
} |
} |
sourceNode.TreeView.ClearSelectedNodes(); |
} |
when i try to retrieve the Exact path on some other Node Click event am not getting the Recent Value that is assigned in the Handle Drop event.
due to this am getting lot of uncertainities.
The Value is not Persistent and not committed.
Is there any Way or code to enable it.
Can any one Help me .
Thanks
Regards
N.Balaji