Avatar billede karl-koder Nybegynder
16. maj 2008 - 23:32 Der er 5 kommentarer og
1 løsning

DropDownList der driller lidt

Hejsa,

Jeg fylder en dropdown liste fra en database med en rekursiv metode. Det jeg gerne vil opnå er at sætte x antal - streger foran mine categorier :

Biler
- Nissan
- Toyota
- - Supra
- - Celica
Motorcykler
- Honda
- - Fireblade
- - Ninja
- Susuki

På den måde kan jeg ilustrer i hvilket niveau mine kategorier ligger.

Til at loade mine hoved kategorier har jeg følgende i min pageload:

if (!IsPostBack)
{
    SqlAutoProvider objAuto = new SqlAutoProvider();
    List<Category> categories = objAuto.GetAllAutoCategory(0);
    foreach (Category rootCat in categories)
    {
        ListItem listItem = new ListItem();
        listItem.Text = rootCat.AutoCategory;
        listItem.Value = rootCat.Id.ToString();
        drp_Category.Items.Add(listItem);
        populateSubCategories(listItem);
    }
}

Og til at loade mine underkategorier rekursivt har jeg denne :

private void populateSubCategories(ListItem n)
{
    //--- Henter liste med alle under sider.
    SqlAutoProvider objAuto = new SqlAutoProvider();
    List<Category> categories = objAuto.GetAllAutoCategory(Convert.ToInt32(n.Value));
    string test = "- ";
    foreach (Category c in categories)
    {
        ListItem listItem = new ListItem(c.AutoCategory, c.Id.ToString());
        listItem.Text = test + c.AutoCategory;
        listItem.Value = c.Id.ToString();
        drp_Category.Items.Add(listItem);
        populateSubCategories(listItem);
    }
}

Og der er ikke nogen fejl men jeg kan bare ikke hitte ud af hvor jeg skal sætte min test += "- "; ind henne for at få det til at se ud som ovenstående. Resultatet som det er nu er følgende :

Biler
- Nissan
- Toyota
- Supra
- Celica
Motorcykler
- Honda
- Fireblade
- Ninja
- Susuki

Hvor jeg her mangler en binde streg ved Supre, Celica, Fireblade og Ninja. Sidder der ikke en derude der kan hjælpe mig færdigt med det sidste ?
Avatar billede erikjacobsen Ekspert
16. maj 2008 - 23:54 #1
Sæt en parameter mere på populateSubCategories, der fortæller hvor mange "- "-ere du vil have. Når du kalder den rekursivt, lægger du een til.
Avatar billede karl-koder Nybegynder
17. maj 2008 - 00:12 #2
Ok, det har jeg så prøvet, så min metode nu indeholder en "string bindeStreg". Men hvor i min metode skal jeg lave bindeStreg += "- "; for at tilføje en ekstra "- "
Avatar billede erikjacobsen Ekspert
17. maj 2008 - 11:20 #3
Hvis du har string bindeStreg som parameter 2, så kald den første gang med:

  populateSubCategories(listItem,"- ");

og i det rekursive kald

  populateSubCategories(listItem,bindeStreg + "- ");
Avatar billede karl-koder Nybegynder
18. maj 2008 - 17:22 #4
Det virker jo som det skal, jeg takker for hjæpen ;o)
Avatar billede erikjacobsen Ekspert
18. maj 2008 - 19:50 #5
Lyder godt. Jeg samler slet ikke på point, tak. Du svarer blot selv, og acceptere dit eget svar.
Avatar billede karl-koder Nybegynder
19. maj 2008 - 09:07 #6
Ok, det gør jeg så ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester