May 08, 2014, 1:16 PM
Function automatically gets called more than once in Page Load
Generating Tree Panel dynamically using table "MenuTreeDetails" attached image for the table
ASPX FILE:
CS FILE:
protected void Page_Load(object sender, EventArgs e)
{
if(IsCallback)
return;
tree = new TreePanel();
MenuItemOBJ = new MenuItem();
FetchData();
InitializeTree();
this.PlaceHolder1.Controls.Add(tree);
CloseDBConnection();
}
InitializeTree() repeatedly executingASPX FILE:
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="TreePanelWebForm.aspx.cs"
Inherits="ExtNETWebApplication_1.TreePanelWebForm" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<title>Multi Node TreePanel built from code-behind - Ext.NET
Examples</title>
<link href="../Styles/examples.css" rel="stylesheet" />
<link href="Styles/Style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="Form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<h1>Multi Node TreePanel Built From Code-Behind</h1>
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
</form>
</body>
</html>
CS FILE:
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using System.Data.SqlClient;
using System.Configuration;
namespace ExtNETWebApplication_1
{
public partial class TreePanelWebForm : System.Web.UI.Page
{
SqlDataAdapter dataAdapter = null;
SqlConnection con = null;
TreePanel tree = null;
MenuItem MenuItemOBJ = null;
protected void Page_Load(object sender, EventArgs e)
{
if(IsCallback)
return;
tree = new TreePanel();
MenuItemOBJ = new MenuItem();
FetchData();
InitializeTree();
this.PlaceHolder1.Controls.Add(tree);
CloseDBConnection();
}
public void InitializeTree()
{
tree.ID = "TreePanel1";
tree.Width = Unit.Pixel(300);
tree.Height = Unit.Pixel(450);
tree.Icon = Icon.BookOpen;
tree.Title = "Catalog";
tree.AutoScroll = true;
Ext.Net.Button btnExpand = new Ext.Net.Button();
btnExpand.Text = "Expand All";
btnExpand.Listeners.Click.Handler = tree.ClientID + ".expandAll();";
Ext.Net.Button btnCollapse = new Ext.Net.Button();
btnCollapse.Text = "Collapse All";
btnCollapse.Listeners.Click.Handler = tree.ClientID + ".collapseAll();";
Toolbar toolBar = new Toolbar();
toolBar.ID = "Toolbar1";
toolBar.Items.Add(btnExpand);
toolBar.Items.Add(btnCollapse);
tree.TopBar.Add(toolBar);
StatusBar statusBar = new StatusBar();
statusBar.ID = "StatusBar1";
statusBar.AutoClear = 1000;
tree.BottomBar.Add(statusBar);
tree.Listeners.ItemClick.Handler = statusBar.ClientID + ".setStatus({text: 'Node Selected: <b>' + record.data.text + '</b>', clear: false});";
tree.Listeners.ItemExpand.Handler = statusBar.ClientID + ".setStatus({text: 'Node Expanded: <b>' + item.data.text + '</b>', clear: false});";
tree.Listeners.ItemExpand.Buffer = 30;
tree.Listeners.ItemCollapse.Handler = statusBar.ClientID + ".setStatus({text: 'Node Collapsed: <b>' + item.data.text + '</b>', clear: false});";
tree.Listeners.ItemCollapse.Buffer = 30;
#region commented code
//Ext.Net.Node root = new Ext.Net.Node()
//{
// Text = nodeName,
// Icon = Icon.None
//};
//root.Expanded = true;
//tree.Root.Add(root);
//foreach (SubMenu subMenu in subMenus)
//{
// Ext.Net.Node subMenuNode = new Ext.Net.Node()
// {
// Text = subMenu.subMenuName,
// Icon = Icon.None
// };
// root.Children.Add(subMenuNode);
// foreach (SubMenuChildren subMenuChildren in subMenu.SubMenuChildrens)
// {
// Ext.Net.Node subMenuChildrensNode = new Ext.Net.Node()
// {
// Text = subMenuChildren.subMenuChildrenName,
// Icon = Icon.None,
// Leaf = true
// };
// subMenuNode.Children.Add(subMenuChildrensNode);
// }
//}
#endregion
Ext.Net.Node root = new Ext.Net.Node()
{
Text = MenuItemOBJ.treeName,
Icon = Icon.None
};
root.Expanded = true;
tree.Root.Add(root);
foreach(MenuItem menuItemTree in MenuItemOBJ.MenuList )
{
Ext.Net.Node MenuChildNode = new Node()
{
Text = menuItemTree.treeName,
Icon = Icon.None
};
MenuChildNode.Expanded = true;
root.Children.Add(MenuChildNode);
if (menuItemTree != null)
{
if (menuItemTree.MenuList != null && menuItemTree.MenuList.Count > 0)
GetChildrenMenuNodeList(MenuChildNode, menuItemTree.MenuList);
}
}
}
private void GetChildrenMenuNodeList(Node MenuChildNodeChildren, List<MenuItem> list)
{
for (int i = 0; i < list.Count; i++)
{
Ext.Net.Node child = new Ext.Net.Node()
{
Text = list[i].treeName,
Icon = Icon.None
};
child.Expanded = true;
MenuChildNodeChildren.Children.Add(child);
if (list[i].MenuList != null && list[i].MenuList.Count > 0)
{
GetChildrenMenuNodeList(MenuChildNodeChildren.Children[i], list[i].MenuList);
}
}
}
public void FetchData()
{
// int masterIDCounter = 0;
DataSet dataSet = new DataSet();
try
{
string connection = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
con = new SqlConnection(connection);
SqlCommand cmd = null;
con.Open();
cmd = new SqlCommand("SELECT * FROM MenuTreeDetails", con);
dataAdapter = new SqlDataAdapter(cmd);
dataAdapter.Fill(dataSet, "MenuTreeDetails");
if (dataSet != null && dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
if (dataSet.Tables[0].Rows[i]["parent_node"].ToString() == "-1")
{
MenuItemOBJ.slideID = Int32.Parse(dataSet.Tables[0].Rows[i]["slide_master_id"].ToString());
MenuItemOBJ.treeName = dataSet.Tables[0].Rows[i]["node_name"].ToString();
MenuItemOBJ.parentNode = Int32.Parse(dataSet.Tables[0].Rows[i]["parent_node"].ToString());
MenuItemOBJ.MenuList = getChildMenuList(MenuItemOBJ.slideID, dataSet.Tables[0]);
}
}
}
}
catch (Exception ex)
{
// Print error message
throw ex;
}
}
private List<MenuItem> getChildMenuList(int p, DataTable dataTable)
{
List<MenuItem> MenuDataList = null;
int count = 0;
for (int i = 0; i < dataTable.Rows.Count; i++)
{
if(p == Int32.Parse(dataTable.Rows[i]["parent_node"].ToString()))
{
if (MenuDataList == null)
{
MenuDataList = new List<MenuItem>();
}
MenuDataList.Add(new MenuItem());
MenuDataList[count].slideID = Int32.Parse(dataTable.Rows[i]["slide_master_id"].ToString());
MenuDataList[count].treeName = dataTable.Rows[i]["node_name"].ToString();
MenuDataList[count].parentNode = Int32.Parse(dataTable.Rows[i]["parent_node"].ToString());
MenuDataList[count].MenuList = getChildMenuList(MenuDataList[count].slideID, dataTable);
count++;
}
}
return MenuDataList;
}
public void CloseDBConnection()
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
} //End of TreePanelWebForm class
}