Avatar billede jan2001 Nybegynder
07. oktober 2008 - 21:41 Der er 7 kommentarer og
1 løsning

combobox a la dropdown i html

Jeg har en liste af objekter med tre attributter:

Land, landekode og værdi

Jeg vil gerne fylde denne liste i en combobox således at landets navn vises, men det der aflæses fra det valgte, er landekoden.
Altså ligesom en dropdown i html, hvor man har en label og en value som sendes/aflæses.

kan man dette?
Avatar billede hmortensen Nybegynder
07. oktober 2008 - 21:51 #1
Du tilføjer blot dine objekter til comboboxen (via Items.Add() metoden), og sætter comboboxens displaymember til navnet på den egenskab som du gerne vil have vist.

comboBox.DisplayMember = "Land";
foreach (MyObj mo in myObjColl)
{
  comboBox.Items.Add(mo);
}

Når du så henter et object fra listen, caster du det blot til din objekt type.

MyObj currentObj = (MyObj)comboBox.SelectItem;
Avatar billede jan2001 Nybegynder
07. oktober 2008 - 22:30 #2
hmm, er ikke helt med.
Altså hele objektet puttes i comboen, men kun værdien af attributten Land vises, right?

Men hvor henter jeg så landekoden ud??

Er heller ikke helt med på hvorfor du caster at object af typen MyObj til samme type?
Avatar billede hmortensen Nybegynder
07. oktober 2008 - 22:40 #3
1. Ja
2. Du henter det valgte land (objekt) med comboBox.SelectedItem, hvilket vil returnere et objekt, derfor skal det objekt så castes til din egen type, for at du kan bruge det til noget.
Avatar billede jan2001 Nybegynder
07. oktober 2008 - 22:52 #4
Ok. Troede at objekterne i myObjColl var af typen MyObj og forblev det hele tiden.

Men det virker. tak.

Så læg et svar.
Avatar billede hmortensen Nybegynder
07. oktober 2008 - 23:08 #5
Er de også, men de objekter som der bliver smidt i Items collection på combobox, vil blive castet til Object, og de skal derfor castes tilbage når de skal bruges igen.
Avatar billede jan2001 Nybegynder
07. oktober 2008 - 23:19 #6
ok. mange tak.

mht. foreach-løkken, kunne det ikke lade sig gøre at bruge addRange på comboboxen?
Avatar billede jan2001 Nybegynder
07. oktober 2008 - 23:20 #7
Altså isteden for foreach-løkken?
Avatar billede hmortensen Nybegynder
08. oktober 2008 - 00:07 #8
Jo det kan det godt.

.AddRange(objColl.ToArray());
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