Dynamically Created Tree Panel and item click event not firing.

  1. #1

    Dynamically Created Tree Panel and item click event not firing.

    I have created a view port layout and designed a panel to load the tree panel menu layout. I was able to generate the layout without any issue but i am having trouble ItemClick list of the Tree Panel. It's doesn't seem to be firing at all. Below is my code.

    The Javascript method i am trying to call is 'loadContentPage'.

    Default.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Inowia.HelpDesk.Default" meta:resourcekey="Page" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    
        <script src="Common/Scripts/Common.js"></script>
        <script type="text/javascript"> 
            var loadContentPage = function (panel, record) {
                panel.loader = {
                    url: record.data.href,
                    render:'html',
                    loadMask: {
                        showMask:true,
                        msg: '<asp:Literal runat="server" Text="<%$ Resources:GlobalStrings, LoadingMaskString %>"></asp:Literal>'
                    }
                    };
            }
        </script>
    </head>
    <body>
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <ext:Viewport ID="MainViewPort" runat="server" Layout="border" IDMode="Explicit" Namespace="App" RenderXType="True">
            <Items>
                <ext:Panel ID="NorthPanel" runat="server" Collapsible="false" Height="100" Region="North"
                    Split="false" Header="false" Border="true" Title="North" meta:resourcekey="NorthPanel">
                    <Loader ID="Loader1" runat="server" AutoLoad="true" Url="Dashboard/Header.aspx" Mode="Html"
                        Scripts="true" />
                    <TopBar>
                        <ext:Toolbar ID="Toolbar1" runat="server">
                            <Items>
                                <ext:Button ID="NewItem" runat="server" Text="New" Icon="Add" meta:resourcekey="NewItem">
                                    <Menu>
                                        <ext:Menu ID="Menu1" runat="server">
                                            <Items>
                                                <ext:Button ID="NewHelpDesk" runat="server" Text="Help Desk" Icon="NewspaperAdd" meta:resourcekey="NewHelpDesk" />
                                                <ext:Button ID="newContact" runat="server" Text="Contact" Icon="VcardAdd" meta:resourcekey="newContact" />
                                            </Items>
                                        </ext:Menu>
                                    </Menu>
                                </ext:Button>
                                <ext:ToolbarFill />
                                <ext:Button ID="btnuserInfo" Text="User Name" runat="server" meta:resourcekey="btnuserInfo">
                                    <Menu>
                                        <ext:Menu ID="Menu2" runat="server">
                                            <Items>
                                                <ext:MenuItem ID="mnuPreference" Text="Preference" Icon="Cog" meta:resourcekey="mnuPreference" />
                                                <ext:MenuItem ID="mnuLogout" Text="Logout" Icon="LockOpen" meta:resourcekey="mnuLogout">
                                                    <DirectEvents>
                                                        <Click OnEvent="mnuLogout_Click" />
                                                    </DirectEvents>
                                                </ext:MenuItem>
                                            </Items>
                                        </ext:Menu>
                                    </Menu>
                                </ext:Button>
                            </Items>
                        </ext:Toolbar>
                    </TopBar>
                </ext:Panel>
                <ext:Panel ID="Panel1" runat="server" Collapsible="false" Region="Center" Split="false"
                    Header="false" Border="false" Layout="BorderLayout">
                    <Items>
                        <ext:Panel ID="Panel2" runat="server" Header="false" Border="false" Region="West"
                            Layout="AccordionLayout" Margins="5 0 5 5" Split="true" Collapsible="true" Title="Navigation"
                            Width="175" MinWidth="175" TitleCollapse="true" Floatable="false" meta:resourcekey="Panel2">
                            <LayoutConfig>
                                <ext:AccordionLayoutConfig OriginalHeader="true" />
                            </LayoutConfig>
                            <TopBar>
                                <ext:Toolbar runat="server">
                                    <Items>
                                        <ext:Button ID="btnReturnToDB" runat="server" meta:resourcekey="btnReturnToDB" Icon="HouseGo" ToolTipType="Qtip">
                                        </ext:Button>
                                        <ext:ToolbarFill />
                                        <ext:Button ID="tbnRefreshMenu" runat="server" meta:resourcekey="tbnRefreshMenu" Icon="ArrowRefresh" ToolTipType="Qtip">
                                        </ext:Button>
                                    </Items>
                                </ext:Toolbar>
                            </TopBar>
                            <Loader Url="Dashboard/MenuLoader.ashx" Mode="Component" runat="server">
                                <LoadMask ShowMask="true" Msg="<%$ Resources:GlobalStrings, LoadingMaskString %>" />
                            </Loader>
                        </ext:Panel>
                        <ext:Panel ID="CenterPanel" runat="server" Layout="Fit" Region="Center" Header="false" AutoScroll="true">
                            <Loader runat="server" AutoLoad="true" Url="Dashboard/Dashboard.aspx" Mode="Html"
                                Scripts="true">
                                <LoadMask ShowMask="true" Msg="<%$ Resources:GlobalStrings, LoadingMaskString %>" />
                            </Loader>
                        </ext:Panel>
                    </Items>
                    <BottomBar>
                        <ext:StatusBar ID="StatusBar1" runat="server" meta:resourcekey="StatusBar1">
                            <Items>
                                <ext:Button ID="UnreadMailButton" Text="Unread Mail (10)" Icon="Email" runat="server" meta:resourcekey="UnreadMailButton" />
                            </Items>
                        </ext:StatusBar>
                    </BottomBar>
                </ext:Panel>
            </Items>
        </ext:Viewport>
    </body>
    </html>
    Dashboard/MenuLoader.ashx.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Ext.Net;
    using Inowia.HelpDesk.Code;
    using Inowia.HelpDeskBL.Dashboard;
    using Inowia.Utilities.Web.UI;
    
    namespace Inowia.HelpDesk.Dashboard
    {
        /// <summary>
        /// Summary description for MenuLoader
        /// </summary>
        public class MenuLoader : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "application/json";
                LeftMenu leftMenuBL = new LeftMenu();
                List<AbstractComponent> menu = new List<AbstractComponent>();
                //Get Top Level Menus
                foreach (LeftMenuItem item in leftMenuBL.GetToplevelMenu())
                {
                    //Each Top Menu will be a Tree Panel
                    TreePanel topMenu = new TreePanel
                    {
                        Title = ResourceHelper.GetGlobalResourceObject("LeftMenuResources", item.TitleResourceKey).ToString(),
                        Icon = (string.IsNullOrEmpty(item.Icon) ? Icon.Folder : (Icon)Enum.Parse(typeof(Icon), item.Icon)),
                        AutoScroll = true,
                        //ID = item.key.ToString(),
                        RootVisible = false
                    };
                    // Can't seem to get this method call to fire when i click on an item in the tree panel.
                    topMenu.Listeners.ItemClick.Handler = "loadContentPage(#{CenterPanel},record);";
    
                    //Add Child Nodes
                    Node childRoot = new Node();
                    if (leftMenuBL.HasChildItems(item.key))
                    {
                        childRoot.Expanded = true;
                        childRoot.Children.AddRange(GetChildNodes(item.key));
                    }
                    else
                    {
                        childRoot.Leaf = true;
                    }
                    topMenu.Root.Add(childRoot);
    
                    menu.Add(topMenu);
                }
                ComponentLoader.Render(menu);
            }
    
            private NodeCollection GetChildNodes(Guid parentKey)
            {
                LeftMenu leftMenuBL = new LeftMenu();
                NodeCollection collection = new NodeCollection();
                if (leftMenuBL.HasChildItems(parentKey))
                {
                    foreach (LeftMenuItem item in leftMenuBL.GetChildMenuItems(parentKey))
                    {
                        Node child = new Node
                        {
    
                            ///TODO: Add Stat Method calls
                            Text = ResourceHelper.GetGlobalResourceObject("LeftMenuResources", item.TitleResourceKey).ToString(),
                            Expanded = true,
                            Icon = (string.IsNullOrEmpty(item.Icon) ? Icon.Folder : (Icon)Enum.Parse(typeof(Icon), item.Icon)),
                            Href = (string.IsNullOrEmpty(item.HRef) ? "" : item.HRef),
                            NodeID = item.key.ToString(),
                            Qtip = (string.IsNullOrEmpty(item.QTipResourceKey) ? "" :
                                ResourceHelper.GetGlobalResourceObject("LeftMenuResources", item.QTipResourceKey).ToString()),
    
                        };
                        if (leftMenuBL.HasChildItems(item.key))
                        {
                            child.Expanded = true;
                            child.Children.AddRange(GetChildNodes(item.key));
                        }
                        else
                        {
                            child.Leaf = true;
                        }
                        collection.Add(child);
                    }
    
                    return collection;
                }
                else
                {
                    return null;
                }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    Thanks in advance.
  2. #2
    #{CenterPanel} - it cannot be parsed inside http handler because CenterPanel is not avaiable inside the handler

    Please use ClientID of CenterPanel

Similar Threads

  1. [CLOSED] Menu Panel Item click event don't fire
    By legaldiscovery in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Dec 31, 2012, 6:53 AM
  2. Replies: 1
    Last Post: Oct 25, 2012, 4:51 PM
  3. Ext .net Menu Panel dynamically created
    By garag in forum 1.x Help
    Replies: 1
    Last Post: Oct 14, 2011, 9:50 AM
  4. Dynamically created panel content
    By reiben in forum 1.x Help
    Replies: 0
    Last Post: Jun 14, 2011, 7:07 AM
  5. [CLOSED] Add Activate Event to dynamically created tabs
    By rnachman in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Jun 02, 2011, 5:37 PM

Posting Permissions