Asp.net ile sitelerde sık sık kullanılan ve dinamik olan bir menü yapacağız. Öncelikle veritabanımızı aşağıdaki gibi hazırlayalım.
Daha sonra kodlarımıza başlayalım. Öncelikle kullanacağımız değişkenleri tanımlıyoruz. Daha sonra menüyü hazırlayacağımız menu metodu yazıyoruz. Öncelikle ilk tablomuzdan ana menüleri seçiyoruz ve ve ilk for döngüsüyle bu değerleri sanal olarak oluşturduğumuz ana_menu ye atıyoruz. Daha sonra diğer for döngüsüyle de ikinci tablomuzdan açılır menüleri kontrol edip onları da ana_menudeki değerlere atamak için oluşturduğumuz alt_menuye atıyoruz. Ve sonuçta menümüzü hazır hale getirdik.
OleDbConnection cn;
OleDbDataAdapter da, da2;
DataTable dt, dt2;
MenuItem ana_menu, alt_menu;
string alt_menu_id;
protected void Page_Load(object sender, EventArgs e) {
cn = new OleDbConnection("Provider=microsoft.jet.oledb.4.0; data source=" + Server.MapPath("~/menu.mdb"));
menu();}
public void menu() {
da = new OleDbDataAdapter("select * from ana_menu order by sira asc", cn);
dt = new DataTable();
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++){
alt_menu_id=dt.Rows[i]["id"].ToString();
ana_menu = new MenuItem();
ana_menu.Text = " " + dt.Rows[i]["ana_menu"].ToString();
ana_menu.NavigateUrl = dt.Rows[i]["link"].ToString();
Menu1.Items.Add(ana_menu);
da2 = new OleDbDataAdapter("select * from alt_menu where ana_menu_id=@id order by sira asc", cn);
da2.SelectCommand.Parameters.AddWithValue("@id", alt_menu_id);
dt2 = new DataTable();
da2.Fill(dt2);
for (int j = 0; j < dt2.Rows.Count; j++){
alt_menu = new MenuItem();
alt_menu.Text = dt2.Rows[j]["alt_menu"].ToString();
alt_menu.NavigateUrl = "default.aspx?alt_id=" + dt2.Rows[j]["id"].ToString();
ana_menu.ChildItems.Add(alt_menu);} }}
Yaptığımız menünün görüntüsü aşağıdaki gibidir. Tabi disaynı sizin zevkinize ve bilginize kalmış birşey.
Kaynak dosyalara
buradan ulaşabilirisiniz.
Ayrıca menünün nasıl yönetileceğini de basit bir şekilde anlattım. Dosyalarda mevcuttur.