|
Rank: Advanced Member Groups: Member
Joined: 4/13/2009 Posts: 37
|
Is there any right click support for the nodes in a treeview? It would be cool if I could right click on a node and have a small menu pop up.
Thanks, Marty
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Yes. There is: http://demo.essentialobjects.com/Default.aspx?path=TreeView\_i1\_i9You can take a look of the source code of that demo to see how it works and let us know if you have any questions. Thanks!
|
|
Rank: Advanced Member Groups: Member
Joined: 4/13/2009 Posts: 37
|
Oh cool! How did I miss that?
Thanks, Marty
|
|
Rank: Advanced Member Groups: Member
Joined: 4/13/2009 Posts: 37
|
I've been working with the treeview demo code. For some reason, the treeview node is always null in the Menu1_Click event method. Am I doing something wrong? Here's the code:
Code: HTML/ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RightClick.aspx.cs" Inherits="JungleDiskUI2.RightClick" %>
<%@ Register assembly="EO.Web" namespace="EO.Web" tagprefix="eo" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<script type="text/javascript">
//<!--JS_SAMPLE_BEGIN-->
function ShowContextMenu(e, treeView, node)
{
//Get the context menu object
var menu = eo_GetObject("<%=Menu1.ClientID%>");
//Modify the context menu
menu.getTopGroup().getItemByIndex(0).setText("Open '" + node.getText() + "'");
menu.getTopGroup().getItemByIndex(1).setText("Delete '" + node.getText() + "'");
//Display the context menu. See documentation
//for the Menu control for details about how
//to handle menu item click event
eo_ShowContextMenu(e, "<%=Menu1.ClientID%>");
//Returns true to indicate that we have
//displayed a context menu
return true;
}
//<!--JS_SAMPLE_END-->
</script>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<eo:TreeView runat="server" id="TreeView1" Width="200px" ControlSkinID="None" Height="250px"
ClientSideOnContextMenu="ShowContextMenu" RaisesServerEvent="True">
<TopGroup Style-CssText="border-bottom-color:#999999;border-bottom-style:solid;border-bottom-width:1px;border-left-color:#999999;border-left-style:solid;border-left-width:1px;border-right-color:#999999;border-right-style:solid;border-right-width:1px;border-top-color:#999999;border-top-style:solid;border-top-width:1px;color:black;cursor:hand;font-family:Tahoma;font-size:8pt;padding-bottom:2px;padding-left:2px;padding-right:2px;padding-top:2px;">
<Nodes>
<eo:TreeNode Text="Documents and Settings">
<SubGroup>
<Nodes>
<eo:TreeNode Text="Administrator"></eo:TreeNode>
<eo:TreeNode Text="All Users"></eo:TreeNode>
<eo:TreeNode Text="Default User"></eo:TreeNode>
</Nodes>
</SubGroup>
</eo:TreeNode>
<eo:TreeNode Text="Program Files">
<SubGroup>
<Nodes>
<eo:TreeNode Text="Common Files"></eo:TreeNode>
<eo:TreeNode Text="ComPlus Applications"></eo:TreeNode>
<eo:TreeNode Text="Internet Explorer"></eo:TreeNode>
<eo:TreeNode Text="MSDN"></eo:TreeNode>
</Nodes>
</SubGroup>
</eo:TreeNode>
<eo:TreeNode Text="Windows">
<SubGroup>
<Nodes>
<eo:TreeNode Text="Fonts"></eo:TreeNode>
<eo:TreeNode Text="Help"></eo:TreeNode>
<eo:TreeNode Text="System32"></eo:TreeNode>
</Nodes>
</SubGroup>
</eo:TreeNode>
</Nodes>
</TopGroup>
<LookNodes>
<eo:TreeNode ImageUrl="00030301" DisabledStyle-CssText="background-color:transparent;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:Gray;padding-bottom:1px;padding-left:1px;padding-right:1px;padding-top:1px;"
CollapsedImageUrl="00030301" ItemID="_Default" NormalStyle-CssText="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; COLOR: black; BORDER-TOP-STYLE: none; PADDING-TOP: 1px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; BORDER-BOTTOM-STYLE: none"
ExpandedImageUrl="00030302" SelectedStyle-CssText="background-color:#316ac5;border-bottom-color:#999999;border-bottom-style:solid;border-bottom-width:1px;border-left-color:#999999;border-left-style:solid;border-left-width:1px;border-right-color:#999999;border-right-style:solid;border-right-width:1px;border-top-color:#999999;border-top-style:solid;border-top-width:1px;color:White;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;"></eo:TreeNode>
</LookNodes>
</eo:TreeView>
<eo:ContextMenu id="Menu1" Width="144px" runat="server" ControlSkinID="None" RaisesServerEvent="True">
<TopGroup Style-CssText="cursor:hand;font-family:Verdana;font-size:11px;">
<Items>
<eo:MenuItem Text-Html="Open"></eo:MenuItem>
<eo:MenuItem Text-Html="Delete"></eo:MenuItem>
<eo:MenuItem IsSeparator="True"></eo:MenuItem>
<eo:MenuItem Text-Html="Refresh"></eo:MenuItem>
</Items>
</TopGroup>
<LookItems>
<eo:MenuItem IsSeparator="True" ItemID="_Separator" NormalStyle-CssText="background-color:#E0E0E0;height:1px;width:1px;"></eo:MenuItem>
<eo:MenuItem HoverStyle-CssText="color:#F7B00A;padding-left:5px;padding-right:5px;" ItemID="_Default"
NormalStyle-CssText="padding-left:5px;padding-right:5px;">
<SubMenu ExpandEffect-Type="GlideTopToBottom" Style-CssText="border-right: #e0e0e0 1px solid; padding-right: 3px; border-top: #e0e0e0 1px solid; padding-left: 3px; font-size: 12px; padding-bottom: 3px; border-left: #e0e0e0 1px solid; cursor: hand; color: #606060; padding-top: 3px; border-bottom: #e0e0e0 1px solid; font-family: arial; background-color: #f7f8f9"
CollapseEffect-Type="GlideTopToBottom" OffsetX="3" ShadowDepth="0" OffsetY="-4" ItemSpacing="5"></SubMenu>
</eo:MenuItem>
</LookItems>
</eo:ContextMenu>
</form>
</body>
</html>
Code: C#
public partial class RightClick : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Menu1.ItemClick += new EO.Web.NavigationItemEventHandler(Menu1_ItemClick);
}
void Menu1_ItemClick(object sender, EO.Web.NavigationItemEventArgs e)
{
if (e.TreeNode != null) // This is always null?
{
string id = e.TreeNode.ItemID;
}
string a = e.MenuItem.Text.ToString();
}
}
Thanks, Marty
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi,
I believe you should use TreeView1.ContextNode instead of e.TreeNode to get the node that triggered the context menu.
Thanks!
|
|
Rank: Advanced Member Groups: Member
Joined: 4/13/2009 Posts: 37
|
Actually, this works:
Code: C#
void Menu1_ItemClick(object sender, EO.Web.NavigationItemEventArgs e)
{
string node = this.TreeView1.SelectedNode.Text; // The node the user selected.
string action = e.MenuItem.Text.ToString(); // The action to be performed on that node.
}
The only issue I have with this approach, is that a user has to left-click and select a node in order for this logic to work. Sometimes people right click on nodes (thinking they are selecting them). Can the treeview select the node when a user right clicks on it? Or do you have another suggestion? Thanks, Marty
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi, The property is ContextNode, not SelectedNode: http://doc.essentialobjects.com/library/1/eo.web.treeview.contextnode.aspxThat property is specifically designed for the purpose of getting the right clicked node. Thanks
|
|
Rank: Advanced Member Groups: Member
Joined: 4/13/2009 Posts: 37
|
Oops. You're right, that works.
Thanks, Marty
|
|