ASP.Net C# Dynamic Menu with DataBase

  • 2128
  • 0

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;
}