Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP.NET/C#]MenuItem dynamisch aan menu toevoegen

Pagina: 1
Acties:

  • Razr
  • Registratie: September 2005
  • Niet online
Ik moet een menu maken met entries uit een database, afhankelijk van welke entries er terugkomen uit de db worden er root items gemaakt met daarin een subitem (nooit dieper dan 1).

Nu ben ik begonnen met een stukje test code (kijken hoe ik het het beste kan doen). Ik had het onderstaande stukje geschreven en tot mijn verbazing werkt het niet goed?!

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            navMenu.Items.Clear();

            //2 submenus maken
            MenuItem a = new MenuItem();
            a.Text = "Test2";
            a.Value = "hoihoib.aspx";
            MenuItem b = new MenuItem();
            a.Text = "Test3";
            a.Value = "hoihoia.aspx";

            //root item
            MenuItem t = new MenuItem();
            t.Text = "Test1";
            t.Value = "blaat.aspx";

            //submenus aan de root toevoegen
            t.ChildItems.Add(a);
            t.ChildItems.Add(b);
            
            //root aan de control toevoegen
            navMenu.Items.Add(t)


Ik maak dus 2 subitems (a en b). Hierna maak ik het root item (t), en koppel ik de subitems aan het root item. Daarna voeg ik ze nog toe aan de control op de pagina (navMenu).

Als ik dit uitvoer krijg ik dus netjes het root item te zien (t) maar daarin staat alleen de laatst toegevoegde item (b dus) :'(

Ook wanneer ik deze code gebruik

C#:
1
2
t.ChildItems.AddAt(0,a);
t.ChildItems.AddAt(1,b);


krijg ik nog precies hetzelfde resultaat. Heel vreemd aangezien ik ze toch toevoegd op een andere index...

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 30-11 20:12
Ik zie dat je op regel 8 en 9 menuitem-a overschrijft.

  • Razr
  • Registratie: September 2005
  • Niet online
Ik moet echt rust hebben 8)7 Heel stom van me...

Maar ik heb nog iets, ben er nog niet helemaal uit met dat menu. Ik wil nu dus mbv een while loop de items en de childitems toevoegen ik heb deze code daarvoor gemaakt:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
while (rdr.Read())
{
  MenuItem hg = new MenuItem();
  MenuItem sg = new MenuItem();

  hg.Text = rdr.GetValue(0).ToString();
  sg.Text = rdr.GetValue(1).ToString();

  hg.ChildItems.Add(sg);

  navMenu.Items.Add(hg);
}

Nu wanneer nu nog een zelfde hg word toegevoegd word deze niet overschreven maar gewoon toegevoegd aan het menu, niet goed dus. Toen had ik dit bedacht:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            if (rdr.HasRows)
            {
                MenuItem hg = new MenuItem();
                MenuItem sg = new MenuItem();
                rdr.Read();
                do
                {
                    hg.Text = rdr.GetValue(0).ToString();

                    while (hg.Text == rdr.GetValue(0).ToString())
                    {
                        sg.Text = rdr.GetValue(1).ToString();
                        hg.ChildItems.Add(sg);
                        rdr.Read();
                    }
                    navMenu.Items.Add(hg);

                } while (rdr.Read());


Maar nu blijf ik de de melding krijgen De index moet binnen de grenzen van de lijst liggen. op regel 49. Dus wanneer ik meerdere subitems toevoeg aan een root item. Zover ik weet zit hier geen limiet op heet aantal items want je kunt toevoegen aan een root item?

Offtopic: mn breakpoints werken niet meer?! iemand een idee wat dit kan zijn

Verwijderd

Offtopic: mn breakpoints werken niet meer?! iemand een idee wat dit kan zijn
Gokje: je compileert in release mode en niet in debug mode?