ASP.Net C# Dynamic Menu with DataBase
/*
隨著年紀越來越大記性越來越沒有,故 放在網路上讓自己要用的時候隨時可以參考
ASP.NET C# HTML Menu 透過資料庫記錄功能表各項設定產生無限迴圈式的資料表,並搭配MENU產生出固定樣式的應用
MENU物件可搭圖片跟文字,但對於文字格式設定CSS的應用應付能力較少
*/
protected void Page_Load(object sender, EventArgs e)
{
conn.Close();
conn.Open();
SqlCommand cmd0 = new SqlCommand("SELECT banner1,banner2,banner3, color1, color2, color3,color4,siteurl FROM menustyle WHERE (type=1) and (getdate() between sdate and edate)", conn);
SqlDataReader dr0 = cmd0.ExecuteReader();
String[] stringa = new String[8];
if (dr0.HasRows == true)
{
while (dr0.Read())
{ for (int drcol = 0; drcol <= 7; drcol++)
{ stringa[drcol] = dr0[drcol].ToString(); }
if (stringa[0] != null)
{ banner2.ImageUrl = stringa[0].ToString(); }
if (stringa[1] != null)
{ banner4.ImageUrl = stringa[1].ToString(); }
if (stringa[2] != null)
{ banner18.ImageUrl = stringa[2].ToString(); }
if (stringa[3] != null)
{ Menu1.ForeColor = ColorTranslator.FromHtml(stringa[3].ToString()); }
if (stringa[4] != null)
{ Menu1.BackColor = ColorTranslator.FromHtml(stringa[4].ToString()); }
if (stringa[5] != null)
{ Menu1.DynamicMenuItemStyle.ForeColor = ColorTranslator.FromHtml(stringa[5].ToString()); }
if (stringa[6] != null)
{ Menu1.DynamicMenuItemStyle.BackColor = ColorTranslator.FromHtml(stringa[6].ToString()); }
if (stringa[7] != null)
{ HyperLink1.NavigateUrl = stringa[7].ToString(); }
}
}
Menu1.Items.Clear();
Menu1 = tempmenu(0, Menu1);
}
public Menu tempmenu(int a0, Menu tempmenu1)
{ Menu backmenu = new Menu();
conn.Close();
conn.Open();
SqlCommand cmd1 = new SqlCommand("SELECT * FROM menulist WHERE ParentID=0", conn);
SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
if (dt1.Rows.Count > 0)
{
for (int i1 = 0; i1 < dt1.Rows.Count; i1++)
{
MenuItem item11 = new MenuItem();
item11.Value = dt1.Rows[i1][0].ToString();//MenuID
item11.Text = dt1.Rows[i1][1].ToString();//Text
item11.NavigateUrl = dt1.Rows[i1][8].ToString();//URL
mainitem(item11);
Menu1.Items.Add(item11);
}
}
conn.Close();
return backmenu;
}
public MenuItem mainitem(MenuItem itemb)
{ conn.Close();
conn.Open();
SqlCommand cmd3 = new SqlCommand(@"SELECT * FROM menulist WHERE ParentID =" + itemb.Value.ToString() + "", conn);
SqlDataAdapter da3 = new SqlDataAdapter(cmd3);
DataTable dt3 = new DataTable();
da3.Fill(dt3);
for (int i3 = 0; i3 < dt3.Rows.Count; i3++)
{
MenuItem item2 = new MenuItem();
item2.Value = dt3.Rows[i3][0].ToString();//MenuID
item2.Text = dt3.Rows[i3][1].ToString();//Text
item2.NavigateUrl = dt3.Rows[i3][8].ToString();//URL
subitem(item2);
itemb.ChildItems.Add(item2);
}
return itemb;
}
public MenuItem subitem(MenuItem itemc)
{ conn.Close();
conn.Open();
SqlCommand cmd4 = new SqlCommand(@"SELECT * FROM menulist WHERE ParentID =" + itemc.Value.ToString() + "", conn);
SqlDataAdapter da4 = new SqlDataAdapter(cmd4);
DataTable dt4 = new DataTable();
da4.Fill(dt4);
for (int i4 = 0; i4 < dt4.Rows.Count; i4++)
{
MenuItem item3 = new MenuItem();
item3.Value = dt4.Rows[i4][0].ToString();//MenuID
item3.Text = dt4.Rows[i4][1].ToString();//Text
item3.NavigateUrl = dt4.Rows[i4][8].ToString();//URL
mainitem(item3);
itemc.ChildItems.Add(item3);
}
return itemc;
}