May 26, 2009, 12:38 PM
How to get selected TreeNode in JavaScript?
Rather than setting which menu items are visible with an AjaxMethod which requires a round trip to the server, I rather do it entirely client side in JavaScript. But I can't seem to get a reference to the selected node. Here is what I have so far, but the SetMenu() is not working:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="FolderViewPanel.ascx.vb" Inherits="FolderViewPanel" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<script type="text/javascript">
function SetMenu(node) {
Ext.Msg.alert('Selected Node Id', FolderViewMenu.node.id);
}
</script>
<ext:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</ext:ScriptManagerProxy>
<ext:Menu ID="FolderViewMenu" runat="server">
<Items>
<ext:MenuItem ID="mnuPrint" runat="server" Text="Print/Plot..." Icon="Printer">
</ext:MenuItem>
<ext:MenuSeparator ID="mnuActivityLogSep" runat="server"></ext:MenuSeparator>
<ext:MenuItem ID="mnuActivityLog" runat="server" Text="Activity Log..." Icon="Table">
<Listeners>
<Click Handler="Coolite.AjaxMethods.ShowActivityLog('test');" />
</Listeners>
</ext:MenuItem>
</Items>
<Listeners>
<BeforeShow Fn="SetMenu" />
</Listeners>
</ext:Menu>
<ext:FitLayout runat="server">
<ext:TreePanel ID="TreePanel1" runat="server" Border="false" Animate="false" AutoScroll="true">
<Listeners>
<BeforeLoad Fn="nodeLoad" />
<Click Handler="Coolite.AjaxMethods.SetSelectedFolder(node.id);" />
<ContextMenu Handler="#{FolderViewMenu}.node = node; node.select(); #{FolderViewMenu}.showAt(e.getXY());" />
</Listeners>
</ext:TreePanel>
</ext:FitLayout>