How can I make the a treepanel node become selected by right clicking as well as left clicking?
Printable View
How can I make the a treepanel node become selected by right clicking as well as left clicking?
Hello!
Please look at the example.
There handling of 'contextmenu' is used to achieve this behavior.
Example
Code:<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!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">
<title>Ext.NET Example</title>
<ext:ResourcePlaceHolder runat="server" />
<script type="text/javascript">
Ext.onReady(function () {
TreePanel1.getRootNode().cascade(function (node) {
node.on('contextmenu', TreePanel1.getSelectionModel().onNodeClick);
})
});
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:TreePanel ID="TreePanel1" runat="server" Height="300">
<Root>
<ext:TreeNode Text="Composers" Expanded="true">
<Nodes>
<ext:TreeNode Text="Beethoven" Expanded="true">
<Nodes>
<ext:TreeNode Text="Concertos" Expanded="true">
<Nodes>
<ext:TreeNode Text="Concert 1" />
<ext:TreeNode Text="Concert 2" />
</Nodes>
</ext:TreeNode>
</Nodes>
</ext:TreeNode>
</Nodes>
</ext:TreeNode>
</Root>
</ext:TreePanel>
</form>
</body>
</html>
That didn't seem to work. Here is my code sample. I put your Ext.onReady code in the head of my page. The rest of the Treepanel is being built in code behind.
Code:<ext:TreePanel
ID="TreePanel1"
runat="server"
Width="250"
RootVisible="False"
Layout="Fit"
ContextMenuID="MenuContext"
TrackMouseOver="true"
Border="false"
Padding="10">
</ext:TreePanel>
<ext:Menu runat="server" ID="MenuContext">
<Items>
<ext:MenuItem runat="server" Text="Text">
<Listeners>
<Click Handler="alert(#{TreePanel1}.getSelectionModel().getSelectedNode().text);"/>
</Listeners>
</ext:MenuItem>
</Items>
</ext:Menu>
Hi tjbishop,
I just tested @Daniil code above and it appears to work correctly. Getting the selected node does return the .text value.
Could I be adding my nodes wrong in the code behind? All other functionality seems to be working okay.
Oh yeah, I am adding the nodes on Page_Load. Could it be an order of operations issue?
It seems that it was an order of operations issue. I used X.AddScript to execute the javascript after I loaded my treepanel...
Thanks for you help! You can mark as solved.Code:
X.AddScript("TreePanel1.getRootNode().cascade(function (node) {" +
"node.on('contextmenu', TreePanel1.getSelectionModel().onNodeClick);" +
"})");