Dynamically create asp.net menu control using C#
Step1: click below link to view Category table and Subcategory table in sqlserver
Link to Category table and Subcategory table click here
Step2: Drag Menu control from toolbox
<asp:Menu ID=”Menu1″ runat=”server” Orientation=”Horizontal”>
</asp:Menu>
Step3: Write below code in Default.aspx.cs (Page Load event)
using System.Data;
using System.Data.SqlClient;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string ConnectionString = “Data Source=192.168.1.23;Initial Catalog=Purchase;User id=sa;Password=abc”;
SqlConnection objConn = new SqlConnection(ConnectionString);
string query = “select CategoryID,CategoryName from tblCategory”;
SqlCommand objCmd = new SqlCommand(query, objConn);
DataSet objDs = new DataSet();
DataSet objDsChild = new DataSet();
SqlDataAdapter objDa = new SqlDataAdapter(objCmd);
objConn.Open();
objDa.Fill(objDs);
int count = objDs.Tables[0].Rows.Count – 1;
for (int i = 0; i < count; i++)
{
string catname = objDs.Tables[0].Rows[i]["CategoryName"].ToString();
int catID = int.Parse(objDs.Tables[0].Rows[i]["CategoryID"].ToString());
//Menu1.Items[i].Text = “dddd”;
MenuItem CatItem = new MenuItem();
CatItem.Text = catname;
CatItem.Value = catID.ToString();
CatItem.NavigateUrl = “http://msdn.microsoft.com/en-us/library/default.aspx”;
Menu1.Items.Add(CatItem);
//Remember below line this line of code will clear SubCategory previous data
//in loop
objDsChild.Clear();
//ChildItems i.e SubCategory items
string query2 = “select categoryID,SubCategoryID,SubCategory from tblSubCategory where CategoryID=” + catID;
SqlCommand objCmd2 = new SqlCommand(query2, objConn);
objCmd.Parameters.Add(”CategoryID”, SqlDbType.Int).Value = catID;
SqlDataAdapter objDaChild = new SqlDataAdapter(objCmd2);
objDaChild.Fill(objDsChild);
int ChildCount = objDsChild.Tables[0].Rows.Count – 1;
for (int j = 0; j <= ChildCount; j++)
{
//int catChildID = int.Parse(objDsChild.Tables[0].Rows[j]["CategoryID"].ToString());
//if (catID == catChildID)
//{
MenuItem SubcatItem = new MenuItem();
SubcatItem.Text = objDsChild.Tables[0].Rows[j]["SubCategory"].ToString();
SubcatItem.Value = objDsChild.Tables[0].Rows[j]["SubCategory"].ToString();
SubcatItem.NavigateUrl = “http://www.google.com”;
//Instead of passing NavigateUrl (http://www.google.com) add
//new column in Subcategory table
//column name Url
//subcatItem.NavigateUrl=objDsChild.Tables[0].Rows[j]["Url"].ToString();
CatItem.ChildItems.Add(SubcatItem);
//}
}
}
objConn.Close();
}
}
Step4: Adding Styles to Menu control
<asp:Menu ID=”Menu1″ runat=”server” Orientation=”Horizontal”>
<StaticMenuStyle BackColor=”#993300″ BorderColor=”Black” BorderStyle=”Solid” BorderWidth=”2px” />
StaticMenuItemStyle BackColor=”#FFFF99″ Font-Names=”Verdana” Font-Size=”9pt” HorizontalPadding=”2px” ItemSpacing=”4px” VerticalPadding=”2px” />
<DynamicHoverStyle BackColor=”#FF9933″
Font-Names=”Tw Cen MT Condensed Extra Bold” ForeColor=”White” />
<DynamicMenuItemStyle BackColor=”#E8EFFF” ForeColor=”#663300″ />
<StaticHoverStyle BackColor=”#FF9933″ Font-Names=”Verdana” Font-Size=”9pt” ForeColor=”White” />
</asp:Menu>
Happy coding…
