Rekursiv metode til opbygning af en menustruktur
Hej Eksperter. Jeg er ved at stirre mig blind på et problem jeg har og håber der er nogen der kan gennemskue det.Jeg har en menu der dynamisk bliver opbygget via data i en access db. Indtil videre har jeg kun brugt to levels i menuen. Menuen skal nu laves mere dynamisk og jeg skal bruge en rekursiv metode til at opbygge den da der kan være x antal levels under hver node.
Jeg starter med at hente alle menuitems i databasen hvorefter jeg laver en list med alle top level items. Hver af disse kan så have subitems der hver især igen kan have subitems osv osv. Det er her problemet opstår. Hvordan laver jeg en rekursiv metode der kan klare dette?
Pt. ser min kode ud som herunder. Den tager kun højde for 2 levels, men skal altså moddes så den kan have x antal levels under hver hoved item. (koden bruges i et website, men det jeg efterspørger er jo kodet i C# så det burde ikke betyde noget)
if (!Page.IsPostBack)
{
controller = new Controller();
ArrayList menuItems = controller.GetFrontendMenu();
ArrayList subMenuItems = controller.GetFrontendSubMenu();
skmMenu.MenuItem oMitem1;
skmMenu.MenuItem oMsubItem1;
foreach (MenuItem oMtmp in menuItems)
{
if (oMtmp.isactive)
{
oMitem1 = new skmMenu.MenuItem("<font style='color:White;'>"+oMtmp.linktext+"</font> ", oMtmp.link);
foreach (Submenu oStmp in subMenuItems)
{
if (oStmp._oMid == oMtmp.id)
{
if (oStmp._oSisactive)
{
oMsubItem1 = new skmMenu.MenuItem(oStmp._oSlinktext, oStmp._oSlink);
oMitem1.SubItems.Add(oMsubItem1);
}
}
}
Menu1.Items.Add(oMitem1);
}
}
Menu1.Cursor = skmMenu.MouseCursor.Pointer;
Menu1.HighlightTopMenu = false;
Menu1.Opacity = "50";
}
Venlig hilsen
Nicki
