Avatar billede ungermand Nybegynder
25. august 2004 - 11:28 Der er 4 kommentarer og
1 løsning

Index 3 i et array skal rykkes til Index 0

Jeg har lidt problemer med følgende. Jeg har et array branches, som jeg sorterer efter alfabetisk orden. Derefter viser jeg det i en DropDownList. Problemet er bare, at jeg vil gerne have ordet "Alle" til at stå øverst. Når jeg bruger nedenstående kode til at gennengå arrayet til det finder ordet "Alle" for derefter at rykke alle pladser én gang, så plads 0 bliver fri, sættes sidste index, altså "www" ind på index 0 - der hvor "Alle" jo gerne skulle have stået. men det er jo pga index-pointeren i... er det muligt evt. at lægge "Alle" over i en string temp når den er fundet og til sidst sætte temp strengen med "Alle" ind på index 0,,, og hvordan?

private void Page_Load(object sender, System.EventArgs e)
{
    if (!IsPostBack)
    {   
        string[] branches = {"Alle", "www", "common", "shop", "clikits", "assets", "maskoflight", "legoland", "kirkfoundation", "admin", "search", "aboutus", "club", "education", "learning", "Kana", "redirect", "mindstorms", "dacta", "galidor", "spybotics", "littlerobots", "brickgame"};

Array.Sort(branches);

for(int i=0; i<branches.Length; i++)
{
    if(branches[i]!="Alle")
      i++;
    else if(branches[i]=="Alle")

    for(int j=0; j<branches.Length; j++)
    {                                branches[i]=branches[i+1];
    }
    branches[0] = branches[i];
}
branchList.DataSource = branches;
branchList.DataBind();
}
}

Håber i kan hjælpe...
Avatar billede snepnet Nybegynder
25. august 2004 - 11:32 #1
Hvis du bruger en System.Collections.Specialized.StringCollection kan du lave en .Insert(index, value);
Avatar billede ungermand Nybegynder
25. august 2004 - 11:34 #2
ehm... tak :) men jeg er ret ny, så vil du ikke skære det lidt ud for mig :D

Tak.
Avatar billede snepnet Nybegynder
25. august 2004 - 12:14 #3
Undskyld... du kan få det foræret, hvis du bruger en af de collections der ligger "klar til dig"... Du kan lige se et eksempel her (en stringcollection kan man ikke rigtig sortere i direkte, og det har du jo også brug for).

Men prøv at se sådan noget som det her :

            SortedList sc = new SortedList();
           
            sc.Add("B", null);
            sc.Add("D", null);
            sc.Add("C", null);

            sc.Add("A", null);
       
            foreach(object key in sc.Keys)
                Response.Write(key.ToString());

(du har så muligheden for at angive en value også, hvilket jo kunne være fint nok til dropdownlister og den slags).

Mvh
Avatar billede lifo Nybegynder
25. august 2004 - 14:43 #4
måske lidt dum kommentar
men når du hardcoder din branches Array hvorfor skriver du dem ikke bare i den rækkefølge du vil have dem ?

men da Alle står først kan du bruge en af de overloadede sort methoder

Array.Sort(branches,1,branches.Length);
Avatar billede ungermand Nybegynder
25. august 2004 - 15:07 #5
Hrm, jeg klarede det selv på en anden måde.

Fjernede bare "Alle" fra branches og satte dette kode ind efter sorteringen:

ArrayList p = new ArrayList(branches);
p.Insert(0, "Alle");
branches = (string[])p.ToArray(typeof(string));

men ellers tak :)
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