<
telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function
CloseToolTip()
{
var tooltip = Telerik.Web.UI.RadToolTip.getCurrent();
if(tooltip)
{ tooltip.hide(); };
}
function
OkToolTip()
{
CloseToolTip();
ajaxManager.ajaxRequest(
"RT_LOT");
}
</
script>
</
telerik:RadCodeBlock>
<
telerik:RadToolTip ID="RT_LOT" runat="server" HideEvent="FromCode" Modal="True"
Position="Center" RelativeTo="BrowserWindow" ShowCallout="False">
<br />
<table style="border-color: #0000FF; border-width: 10px; width: 100%; text-align: left;">
<tr>
<td><asp:Label ID="RT_LOT_LibLabel" runat="server"></asp:Label></td>
<td><asp:RequiredFieldValidator ID="RT_LOT_RFV" runat="server" Display="Dynamic" ErrorMessage="Erreur"
ControlToValidate="RT_LOT_Lib" SetFocusOnError="True">*</asp:RequiredFieldValidator></td>
<td><asp:TextBox ID="RT_LOT_Lib" runat="server" Width="336px"></asp:TextBox></td>
</tr>
<tr>
<td colspan="3"><asp:ValidationSummary ID="RT_LOT_ValidationSummary" DisplayMode="BulletList" runat="server" /></td>
</tr>
<tr>
<td><input id="RT_LOT_Ok" runat="server" type="button" value="Ok" onclick="OkToolTip();"
style="width: 80px; color: #008000; font-weight: bold;" /></td>
<td></td>
<td><input id="RT_LOT_AnnBt" type="button" value="Annuler" onclick="CloseToolTip();"
style="width: 80px; color: #FF0000; font-weight: bold;" /></td>
</tr>
</table>
</telerik:RadToolTip>
protected
void Page_Load(object sender, EventArgs e)
{
try
{
radAjaxManager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(manager_AjaxRequest);
radAjaxManager.AjaxSettings.AddAjaxSetting(toolBar, RT_LOT);
}
catch (Exception err)
{...
}
}
protected
void toolBar_ButtonClick(object sender, RadToolBarEventArgs e)
{
try
{
switch (e.Item.Value)
{
case @"CRT":
...
RT_LOT.Show();
break;
}
}
catch (Exception err)
{...
}
}
protected
void manager_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
{
try
{
if (e.Argument == @"RT_LOT")
{
... };
}
catch (Exception err)
{ ...
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="treeviewnew.aspx.cs" Inherits="treeviewnew" %> <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head></head> <body class="BODY"> <form runat="server" id="mainForm" method="post"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <script type="text/javascript"> //<!-- function onClientContextMenuShowing(sender, args) { var treeNode = args.get_node(); treeNode.set_selected(true); //enable/disable menu items setMenuItemsState(args.get_menu().get_items(), treeNode); } function onClientContextMenuItemClicking(sender, args) { var menuItem = args.get_menuItem(); var treeNode = args.get_node(); menuItem.get_menu().hide(); switch (menuItem.get_value()) { case "New": break; case "Edit": treeNode.startEdit(); break; case "Delete": var result = confirm("Are you sure you want to delete the item: " + treeNode.get_text()); args.set_cancel(!result); break; } } //this method disables the appropriate context menu items function setMenuItemsState(menuItems, treeNode) { for (var i = 0; i < menuItems.get_count(); i++) { var menuItem = menuItems.getItem(i); switch (menuItem.get_value()) { case "New": formatMenuItem(menuItem, treeNode, 'New '); break; case "Edit": formatMenuItem(menuItem, treeNode, 'Edit "{0}"'); break; case "Delete": formatMenuItem(menuItem, treeNode, 'Delete "{0}"'); break; } } } //formats the Text of the menu item function formatMenuItem(menuItem, treeNode, formatString) { var nodeValue = treeNode.get_value(); if (nodeValue && nodeValue.indexOf("_Private_") == 0) { menuItem.set_enabled(false); } else { menuItem.set_enabled(true); } var newText = String.format(formatString, extractTitleWithoutMails(treeNode)); menuItem.set_text(newText); } //checks if the text contains (digit) function hasNodeMails(treeNode) { return treeNode.get_text().match(/\([\d]+\)/ig); } //removes the brackets with the numbers,e.g. Inbox (30) function extractTitleWithoutMails(treeNode) { return treeNode.get_text().replace(/\s*\([\d]+\)\s*/ig, ""); } //--> </script> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> </telerik:RadAjaxLoadingPanel> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1"> <telerik:RadTreeView ID="RadTreeView1" runat="server" OnContextMenuItemClick="RadTreeView1_ContextMenuItemClick" OnClientContextMenuItemClicking="onClientContextMenuItemClicking" OnClientContextMenuShowing="onClientContextMenuShowing" OnNodeEdit="RadTreeView1_NodeEdit" DataFieldID="id" DataFieldParentID="parentid" DataSourceID="SqlDataSource1" DataTextField="description" DataValueField="value" MaxDataBindDepth="4" Skin="WebBlue" > <ContextMenus> <telerik:RadTreeViewContextMenu ID="MainContextMenu" runat="server"> <Items> <telerik:RadMenuItem Value="New" Text="New ..." > </telerik:RadMenuItem> <telerik:RadMenuItem Value="Edit" Text="Edit ..." > </telerik:RadMenuItem> <telerik:RadMenuItem Value="Delete" Text="Delete.." > </telerik:RadMenuItem> </Items> <CollapseAnimation Type="none" /> </telerik:RadTreeViewContextMenu> <telerik:RadTreeViewContextMenu ID="EmptyFolderContextMenu" runat="server"> <Items> <telerik:RadMenuItem Value="New" Text="New "> </telerik:RadMenuItem> </Items> <CollapseAnimation Type="none" /> </telerik:RadTreeViewContextMenu> </ContextMenus> </telerik:RadTreeView> </telerik:RadAjaxPanel> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ECMApp3 %>" SelectCommand="select distinct isnull(state,'')+'state' as id, null as parentid, isnull(state,'no state') as description, isnull(state,'') as value from projects union all select cast(p.id as varchar(10))+'project' as id, isnull(p.state, '')+'state' as parentid , p.description, cast(p.id as varchar(10)) from projects p union all select cast(l.id as varchar(10))+'location', cast(p.id as varchar(10))+'project', l.name ,cast( l.id as varchar(10)) from locations l inner join projects p on l.project_id=p.id union all select cast (b.id as varchar(10))+'building', cast(l.id as varchar(10))+'location', b.building_name, cast(b.id as varchar(10)) from buildings b inner join locations l on b.location_id=l.id --where l.id <2"></asp:SqlDataSource> </form> </body> </html> using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Telerik.Web.UI; using System.Text.RegularExpressions; public partial class treeviewnew : System.Web.UI.Page { protected const string unreadPattern = @"\(\d+\)"; protected void Page_Load(object sender, EventArgs e) { SqlDataSource1.DataBind(); SqlDataSource1.Select(DataSourceSelectArguments.Empty); //RadTreeView2.DataBind(); } protected void RadTreeView1_ContextMenuItemClick(object sender, RadTreeViewContextMenuEventArgs e) { RadTreeNode clickedNode = e.Node; switch (e.MenuItem.Value) { case "New": RadTreeNode clonedNode = clickedNode.Clone(); clonedNode.Text = string.Format("Copy of {0}", clickedNode.Text); clickedNode.InsertAfter(clonedNode); //set node's value so we can find it in startNodeInEditMode clonedNode.Value = clonedNode.GetFullPath("/"); clonedNode.Selected = true; startNodeInEditMode(clonedNode.Value); break; case "Delete": clickedNode.Remove(); break; } } private void startNodeInEditMode(string nodeValue) { //find the node by its Value and edit it when page loads string js = "Sys.Application.add_load(editNode); function editNode(){ "; js += "var tree = $find(\"" + RadTreeView1.ClientID + "\");"; js += "var node = tree.findNodeByValue('" + nodeValue + "');"; js += "if (node) node.startEdit();"; js += "Sys.Application.remove_load(editNode);};"; RadScriptManager.RegisterStartupScript(Page, Page.GetType(), "nodeEdit", js, true); } protected void RadTreeView1_NodeEdit(object sender, RadTreeNodeEditEventArgs e) { e.Node.Text = e.Text; } //this method is used by Mark All as Read and Empty this folder protected void emptyFolder(RadTreeNode node, bool removeChildNodes) { node.Font.Bold = false; node.Text = Regex.Replace(node.Text, unreadPattern, ""); if (removeChildNodes) { //Empty this folder is clicked for (int i = node.Nodes.Count - 1; i >= 0; i--) { node.Nodes.RemoveAt(i); } } else { //Mark all as read is clicked foreach (RadTreeNode child in node.Nodes) { emptyFolder(child, removeChildNodes); } } } }