Avatar billede talos Nybegynder
02. februar 2006 - 11:15 Der er 7 kommentarer og
1 løsning

Checkedlistbox - getIndex?

Hej Eksperter.

Jeg har et problem med en checkedlistbox. Jeg vil gerne loope over alle items i min listbox hvilket ikke er problemet.

Men når jeg vil hente index for alle items har jeg et problem - hvordan gør jeg dette ?
Jeg vil bruge dette index som en "sortid" i min database.

Koden jeg har indtil nu er følgende:
foreach (object var in checkedListBox_Henvendelsestype.Items)
{
  checkedListBox_Henvendelsestype.SelectedItem = var.ToString();
  controller.updateCategory(comboBox_Kategori.SelectedItem.ToString(), "update", 0, var.ToString());

}

Det er 0´et jeg gerne vil have skiftet ud med index værdien for hver item (var).

Håber der er nogen der kan hjælpe. Det er sikkert simpelt, men stirrer mig blindt på problemet lige nu.
Avatar billede bitsch Nybegynder
02. februar 2006 - 12:12 #1
Hvis det er inex værdierne for checked items du skal have fat i, så gør du således:

            foreach (int index in this.checkedListBox1.CheckedIndices)
            {
                MessageBox.Show(index.ToString());
            }
Avatar billede bitsch Nybegynder
02. februar 2006 - 12:14 #2
Avatar billede talos Nybegynder
02. februar 2006 - 12:20 #3
Det er ikke kun for checked items jeg skal have index værdierne - gør det nogen forskel? Er jeg nødt til først at checke alle item af i listen før jeg kan få index værdierne?

Jeg har netop brugt checkedlistbox.Items for at få alle items, men er ikke sikker på dette er måden at gøre det på.
Avatar billede bitsch Nybegynder
02. februar 2006 - 12:33 #4
Hvis du looper gennem items vil den starte med index 0, så du kan blot lave en counter, hvis det er denne vej du ønsker at gå, men tror du ikke nærmere at du bør lave en index kolonne i din database i stedet som bliver assignet samtidigt med at du opretter elementer?
Avatar billede talos Nybegynder
02. februar 2006 - 12:39 #5
Der er allerede en index kolonne i databasen.

Men da listen ikke er ret stor har jeg valgt ikke at bruge dataset.

Jeg bruger derfor blot index´et fra min liste og laver en update i min database.
Brugeren skal have mulighed for at ændre den sortering listen vises i ved hjælp af et pil up og en pil down. Når brugeren er færdig og vælger "gem" kører jeg min update og opdaterer "sortid" kolonnen i min database med indeks værdierne.
Avatar billede bitsch Nybegynder
02. februar 2006 - 12:41 #6
Men hvis du skal have index værdien for alle elementer kan du gøre således:

            int cnt = -1; // Husk at index er 0 baseret!

            foreach (object obj in this.checkedListBox1.Items)
            {
                cnt++;
               
                MessageBox.Show(obj.ToString() + " - " + cnt.ToString());
            }

Men du bør nok overveje dit design, for det ser ud til at du er ved at vende logikken "på hovedet".
Avatar billede talos Nybegynder
02. februar 2006 - 12:41 #7
Men LOL :) en ganske almindelig counter var jo alt hvad jeg skulle bruge.

Utroligt jeg ikke lige gennemskuede den med det samme, men var fokuseret på metoderne i checkedlist og overså det mest naturlige.

Smid et svar så vi kan lukke ;) tak for hjælpen
Avatar billede bitsch Nybegynder
02. februar 2006 - 12:44 #8
Ok, men check lige linket fra msdn. Der er en del god forklaring, samt et godt eksempel.
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