table structure of menu22
ID Name Url ParentID IsActive DisplayOrder
1 A 0 1 1
2 B 0 1 2
3 C 0 1 3
4 A1 1 1 1
5 B1 2 1 2
6 C1 3 1 1
7 B2 2 1 1
8 B2_1 7 1 2
9 B3 2 1 3
dynamic menu control
take a class
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Summary description for PageModules
/// </summary>
public class PageModules
{
public PageModules()
{
//
// TODO: Add constructor logic here
//
}
#region Fields
/// <summary>
/// Field to store ID
/// </summary>
private int _id;
/// <summary>
/// Field to store Menu Name
/// </summary>
private string _menuName;
/// <summary>
/// Field to store Page Url
/// </summary>
private string _pageUrl;
/// <summary>
/// Field to store Parent ID
/// </summary>
private int _parentId;
/// <summary>
/// Field to store Is Active
/// </summary>
private bool _isActive;
/// <summary>
/// Field to store Display Order
/// </summary>
private int _displayOrder;
/// <summary>
/// Field to store Create By
/// </summary>
private string _createBy;
/// <summary>
/// Field to store Create Date
/// </summary>
private DateTime _createDate;
/// <summary>
/// Field to store Update By
/// </summary>
private string _updateBy;
/// <summary>
/// Field to store Update Date
/// </summary>
private DateTime _updateDate;
/// <summary>
/// Field to store selected flag
/// </summary>
private bool _isSelected;
#endregion
#region Properties
/// <summary>
/// Gets or Sets ID
/// </summary>
public int ID
{
get { return _id; }
set { _id = value; }
}
/// <summary>
/// Gets or Sets MenuName
/// </summary>
public string MenuName
{
get { return _menuName; }
set { _menuName = value; }
}
/// <summary>
/// Gets or Sets PageURL
/// </summary>
public string PageURL
{
get { return _pageUrl; }
set { _pageUrl = value; }
}
/// <summary>
/// Gets or Sets ParentID
/// </summary>
public int ParentID
{
get { return _parentId; }
set { _parentId = value; }
}
/// <summary>
/// Gets or Sets IsActive
/// </summary>
public bool IsActive
{
get { return _isActive; }
set { _isActive = value; }
}
/// <summary>
/// Gets or Sets DisplayOrder
/// </summary>
public int DisplayOrder
{
get { return _displayOrder; }
set { _displayOrder = value; }
}
/// <summary>
/// Gets or Sets CreateBy
/// </summary>
public string CreateBy
{
get { return _createBy; }
set { _createBy = value; }
}
/// <summary>
/// Gets or Sets CreateDate
/// </summary>
public DateTime CreateDate
{
get { return _createDate; }
set { _createDate = value; }
}
/// <summary>
/// Gets or Sets UpdateBy
/// </summary>
public string UpdateBy
{
get { return _updateBy; }
set { _updateBy = value; }
}
/// <summary>
/// Gets or Sets UpdateDate
/// </summary>
public DateTime UpdateDate
{
get { return _updateDate; }
set { _updateDate = value; }
}
/// <summary>
/// Gets or Sets IsSelected
/// </summary>
public bool IsSelected
{
get { return _isSelected; }
set { _isSelected = value; }
}
#endregion
}
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
try
{
LoadMenu();
}
catch (Exception ex)
{
}
}
private void LoadMenu()
{
List<PageModules> oListPageModules = null;
try
{
oListPageModules = GetPageModule();
FillMenu(oListPageModules);
}
catch (Exception ex)
{
throw ex;
}
}
public List<PageModules> GetPageModule()
{
IDataReader dr = null;
PageModules oPageModule = null;
List<PageModules> oPageModuleList = null;
DataSet oDs = null;
try
{
//oDs = SqlHelper.ExecuteDataset(con, CommandType.Text, "select * from r_PageModule");
dr = SqlHelper.ExecuteReader(con, CommandType.Text, "select * from menu22");
if (dr != null)
{
oPageModuleList = new List<PageModules>();
while (dr.Read())
{
oPageModule = new PageModules();
if (dr["ID"] != null && dr["ID"] != DBNull.Value)
{
oPageModule.ID = int.Parse(dr["ID"].ToString());
}
if (dr["Name"] != null && dr["Name"] != DBNull.Value)
{
oPageModule.MenuName = dr["Name"].ToString().Trim();
}
if (dr["Url"] != null && dr["Url"] != DBNull.Value)
{
oPageModule.PageURL = dr["Url"].ToString().Trim();
}
if (dr["ParentID"] != null && dr["ParentID"] != DBNull.Value)
{
oPageModule.ParentID = int.Parse(dr["ParentID"].ToString());
}
if (dr["DisplayOrder"] != null && dr["DisplayOrder"] != DBNull.Value)
{
oPageModule.DisplayOrder = int.Parse(dr["DisplayOrder"].ToString());
}
oPageModuleList.Add(oPageModule);
}
dr.Close();
}
}
catch (Exception ex)
{
throw ex;
}
return oPageModuleList;
}
private void FillMenu(List<PageModules> oPageModulesList)
{
List<PageModules> oParentModules = null;
try
{
// If Page modules is not null
if (oPageModulesList != null && oPageModulesList.Count > 0)
{
foreach (PageModules oPages in oPageModulesList)
{
if (oPages.ParentID == 0)
{
if (oParentModules == null)
oParentModules = new List<PageModules>();
oParentModules.Add(oPages);
}
}
// If parent modules is not null
if (oParentModules != null)
{
// Sort parent modules
oParentModules.Sort(delegate(PageModules pm1, PageModules pm2)
{
return pm1.DisplayOrder.CompareTo(pm2.DisplayOrder);
});
LoadPageModules(oParentModules, oPageModulesList);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
private void LoadPageModules(List<PageModules> oParentModules, List<PageModules> oPageModulesList)
{
MenuItem childMenuItem = null;
MenuItem parentMenuItem = null;
List<PageModules> oChildModules = null;
try
{
// Iterate each parent module
oParentModules.ForEach(delegate(PageModules oParentModule)
{
parentMenuItem = new MenuItem();
parentMenuItem.Text = oParentModule.MenuName;
parentMenuItem.Value = oParentModule.ID.ToString();
if (!string.IsNullOrEmpty(oParentModule.PageURL))
{
parentMenuItem.NavigateUrl = ResolveUrl(oParentModule.PageURL);
}
else
{
parentMenuItem.Selectable = false;
}
foreach (PageModules oChildPages in oPageModulesList)
{
if (oChildPages.ParentID == oParentModule.ID)
{
if (oChildModules == null)
oChildModules = new List<PageModules>();
oChildModules.Add(oChildPages);
}
}
if (oChildModules != null)
{
// Get child menu items
childMenuItem = AddChildNode(oChildModules, ref parentMenuItem);
oChildModules = new List<PageModules>();
}
Menu1.Items.Add(parentMenuItem);
});
}
catch (Exception ex)
{
throw ex;
}
}
private MenuItem AddChildNode(List<PageModules> oChildModules, ref MenuItem parentMenuItem)
{
MenuItem childMenuItem = null;
List<PageModules> oSubChildModules = null;
try
{
// If child modules are found
if (oChildModules != null && oChildModules.Count > 0)
{
// Sort child modules
oChildModules.Sort(delegate(PageModules pm1, PageModules pm2)
{
return pm1.DisplayOrder.CompareTo(pm2.DisplayOrder);
});
// Iterate each child module
foreach (PageModules oChildModule in oChildModules)
{
// Create child menu item
childMenuItem = new MenuItem();
childMenuItem.Text = oChildModule.MenuName;
childMenuItem.Value = oChildModule.ID.ToString();
if (!string.IsNullOrEmpty(oChildModule.PageURL))
{
childMenuItem.NavigateUrl = ResolveUrl(oChildModule.PageURL);
}
else
{
childMenuItem.Selectable = false;
}
oSubChildModules = GetPageModule();
// Find child page modules
oSubChildModules = oSubChildModules.FindAll(delegate(PageModules oPageModule)
{
return ((oPageModule.ParentID == oChildModule.ID) ? true : false);
});
if (oSubChildModules != null)
{
// Populate child sub menu
AddChildNode(oSubChildModules, ref childMenuItem);
}
parentMenuItem.ChildItems.Add(childMenuItem);
}
}
}
catch (Exception ex)
{
throw ex;
}
return childMenuItem;
}
}
ID Name Url ParentID IsActive DisplayOrder
1 A 0 1 1
2 B 0 1 2
3 C 0 1 3
4 A1 1 1 1
5 B1 2 1 2
6 C1 3 1 1
7 B2 2 1 1
8 B2_1 7 1 2
9 B3 2 1 3
dynamic menu control
take a class
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Summary description for PageModules
/// </summary>
public class PageModules
{
public PageModules()
{
//
// TODO: Add constructor logic here
//
}
#region Fields
/// <summary>
/// Field to store ID
/// </summary>
private int _id;
/// <summary>
/// Field to store Menu Name
/// </summary>
private string _menuName;
/// <summary>
/// Field to store Page Url
/// </summary>
private string _pageUrl;
/// <summary>
/// Field to store Parent ID
/// </summary>
private int _parentId;
/// <summary>
/// Field to store Is Active
/// </summary>
private bool _isActive;
/// <summary>
/// Field to store Display Order
/// </summary>
private int _displayOrder;
/// <summary>
/// Field to store Create By
/// </summary>
private string _createBy;
/// <summary>
/// Field to store Create Date
/// </summary>
private DateTime _createDate;
/// <summary>
/// Field to store Update By
/// </summary>
private string _updateBy;
/// <summary>
/// Field to store Update Date
/// </summary>
private DateTime _updateDate;
/// <summary>
/// Field to store selected flag
/// </summary>
private bool _isSelected;
#endregion
#region Properties
/// <summary>
/// Gets or Sets ID
/// </summary>
public int ID
{
get { return _id; }
set { _id = value; }
}
/// <summary>
/// Gets or Sets MenuName
/// </summary>
public string MenuName
{
get { return _menuName; }
set { _menuName = value; }
}
/// <summary>
/// Gets or Sets PageURL
/// </summary>
public string PageURL
{
get { return _pageUrl; }
set { _pageUrl = value; }
}
/// <summary>
/// Gets or Sets ParentID
/// </summary>
public int ParentID
{
get { return _parentId; }
set { _parentId = value; }
}
/// <summary>
/// Gets or Sets IsActive
/// </summary>
public bool IsActive
{
get { return _isActive; }
set { _isActive = value; }
}
/// <summary>
/// Gets or Sets DisplayOrder
/// </summary>
public int DisplayOrder
{
get { return _displayOrder; }
set { _displayOrder = value; }
}
/// <summary>
/// Gets or Sets CreateBy
/// </summary>
public string CreateBy
{
get { return _createBy; }
set { _createBy = value; }
}
/// <summary>
/// Gets or Sets CreateDate
/// </summary>
public DateTime CreateDate
{
get { return _createDate; }
set { _createDate = value; }
}
/// <summary>
/// Gets or Sets UpdateBy
/// </summary>
public string UpdateBy
{
get { return _updateBy; }
set { _updateBy = value; }
}
/// <summary>
/// Gets or Sets UpdateDate
/// </summary>
public DateTime UpdateDate
{
get { return _updateDate; }
set { _updateDate = value; }
}
/// <summary>
/// Gets or Sets IsSelected
/// </summary>
public bool IsSelected
{
get { return _isSelected; }
set { _isSelected = value; }
}
#endregion
}
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
try
{
LoadMenu();
}
catch (Exception ex)
{
}
}
private void LoadMenu()
{
List<PageModules> oListPageModules = null;
try
{
oListPageModules = GetPageModule();
FillMenu(oListPageModules);
}
catch (Exception ex)
{
throw ex;
}
}
public List<PageModules> GetPageModule()
{
IDataReader dr = null;
PageModules oPageModule = null;
List<PageModules> oPageModuleList = null;
DataSet oDs = null;
try
{
//oDs = SqlHelper.ExecuteDataset(con, CommandType.Text, "select * from r_PageModule");
dr = SqlHelper.ExecuteReader(con, CommandType.Text, "select * from menu22");
if (dr != null)
{
oPageModuleList = new List<PageModules>();
while (dr.Read())
{
oPageModule = new PageModules();
if (dr["ID"] != null && dr["ID"] != DBNull.Value)
{
oPageModule.ID = int.Parse(dr["ID"].ToString());
}
if (dr["Name"] != null && dr["Name"] != DBNull.Value)
{
oPageModule.MenuName = dr["Name"].ToString().Trim();
}
if (dr["Url"] != null && dr["Url"] != DBNull.Value)
{
oPageModule.PageURL = dr["Url"].ToString().Trim();
}
if (dr["ParentID"] != null && dr["ParentID"] != DBNull.Value)
{
oPageModule.ParentID = int.Parse(dr["ParentID"].ToString());
}
if (dr["DisplayOrder"] != null && dr["DisplayOrder"] != DBNull.Value)
{
oPageModule.DisplayOrder = int.Parse(dr["DisplayOrder"].ToString());
}
oPageModuleList.Add(oPageModule);
}
dr.Close();
}
}
catch (Exception ex)
{
throw ex;
}
return oPageModuleList;
}
private void FillMenu(List<PageModules> oPageModulesList)
{
List<PageModules> oParentModules = null;
try
{
// If Page modules is not null
if (oPageModulesList != null && oPageModulesList.Count > 0)
{
foreach (PageModules oPages in oPageModulesList)
{
if (oPages.ParentID == 0)
{
if (oParentModules == null)
oParentModules = new List<PageModules>();
oParentModules.Add(oPages);
}
}
// If parent modules is not null
if (oParentModules != null)
{
// Sort parent modules
oParentModules.Sort(delegate(PageModules pm1, PageModules pm2)
{
return pm1.DisplayOrder.CompareTo(pm2.DisplayOrder);
});
LoadPageModules(oParentModules, oPageModulesList);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
private void LoadPageModules(List<PageModules> oParentModules, List<PageModules> oPageModulesList)
{
MenuItem childMenuItem = null;
MenuItem parentMenuItem = null;
List<PageModules> oChildModules = null;
try
{
// Iterate each parent module
oParentModules.ForEach(delegate(PageModules oParentModule)
{
parentMenuItem = new MenuItem();
parentMenuItem.Text = oParentModule.MenuName;
parentMenuItem.Value = oParentModule.ID.ToString();
if (!string.IsNullOrEmpty(oParentModule.PageURL))
{
parentMenuItem.NavigateUrl = ResolveUrl(oParentModule.PageURL);
}
else
{
parentMenuItem.Selectable = false;
}
foreach (PageModules oChildPages in oPageModulesList)
{
if (oChildPages.ParentID == oParentModule.ID)
{
if (oChildModules == null)
oChildModules = new List<PageModules>();
oChildModules.Add(oChildPages);
}
}
if (oChildModules != null)
{
// Get child menu items
childMenuItem = AddChildNode(oChildModules, ref parentMenuItem);
oChildModules = new List<PageModules>();
}
Menu1.Items.Add(parentMenuItem);
});
}
catch (Exception ex)
{
throw ex;
}
}
private MenuItem AddChildNode(List<PageModules> oChildModules, ref MenuItem parentMenuItem)
{
MenuItem childMenuItem = null;
List<PageModules> oSubChildModules = null;
try
{
// If child modules are found
if (oChildModules != null && oChildModules.Count > 0)
{
// Sort child modules
oChildModules.Sort(delegate(PageModules pm1, PageModules pm2)
{
return pm1.DisplayOrder.CompareTo(pm2.DisplayOrder);
});
// Iterate each child module
foreach (PageModules oChildModule in oChildModules)
{
// Create child menu item
childMenuItem = new MenuItem();
childMenuItem.Text = oChildModule.MenuName;
childMenuItem.Value = oChildModule.ID.ToString();
if (!string.IsNullOrEmpty(oChildModule.PageURL))
{
childMenuItem.NavigateUrl = ResolveUrl(oChildModule.PageURL);
}
else
{
childMenuItem.Selectable = false;
}
oSubChildModules = GetPageModule();
// Find child page modules
oSubChildModules = oSubChildModules.FindAll(delegate(PageModules oPageModule)
{
return ((oPageModule.ParentID == oChildModule.ID) ? true : false);
});
if (oSubChildModules != null)
{
// Populate child sub menu
AddChildNode(oSubChildModules, ref childMenuItem);
}
parentMenuItem.ChildItems.Add(childMenuItem);
}
}
}
catch (Exception ex)
{
throw ex;
}
return childMenuItem;
}
}