Feb 06, 2013, 4:52 PM
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
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.csusing 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.