Avatar billede ktolbod Nybegynder
17. maj 2006 - 11:34 Der er 10 kommentarer og
1 løsning

CheckBox_CheckedChanged event i VB

Hej,
Jeg har en datalist hvor jeg for hvert item har en ckeckbox.
Der er kun en checkbox som må være checked (altså de fungerer lidt lige som radio buttons).
Men på eventet CheckBox_CheckedChanged, hvordan er jeg så istand til at hive info ud fra datalisten, et ID eller lign?

fns ser sådan ud:
CheckBox_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)

og hvordan fungere System.EventArgs?
Avatar billede snepnet Nybegynder
18. maj 2006 - 23:37 #1
din sender er din checkbox, og du kan få fat i dit DataGridItem ved at typecaste din checkbox's namingcontainer.
CheckBox cb = sender as CheckBox;
DataGridItem item = cb.NamingContainer;
... her kan du så tilgå dit DataGridItem

System.EventArgs er baseklassen for alle eventargumenter, og kan ikke som sådan i sig selv.
Det kan dog specialiseres til holde relevant information om den hændelse der er sket, hvilket også ofte bliver udnytte.

F.eks. kan du abbonnere på en SortCommand på et datagrid, og så et argument af denne type istedet:
DataGridSortCommandEventArgs

Hvilket så bla. indeholder en sortdirection.

Mvh
Avatar billede ktolbod Nybegynder
19. maj 2006 - 09:59 #2
Yirrr det virker, smid et svar snepnet :)
I vb:
Dim cb As CheckBox = CType(sender, CheckBox)
Dim item As DataListItem = cb.NamingContainer
Avatar billede ktolbod Nybegynder
19. maj 2006 - 11:48 #3
Og dog...
NamingContainer'en indeholder jo nu samtlige checkboxe, men jeg skal jo kun have fat i dem checkbox som brugeren har klikket på?
Avatar billede snepnet Nybegynder
19. maj 2006 - 18:58 #4
Denne her : Dim cb As CheckBox = CType(sender, CheckBox) - giver dig den checkbox der er klikket på.
Den næste linie giver dig adgang til dit datalistitem (hvis du har noget at bruge det til).
Mvh
Avatar billede ktolbod Nybegynder
22. maj 2006 - 17:07 #5
Hej,
Men hvordan kan jeg hive fat i fx et ID på checkboxen?
Avatar billede snepnet Nybegynder
22. maj 2006 - 17:10 #6
Det kan du gøre, hvis du har angivet din checkbox i en template, og givet den et ID... Så kan du lave sådan en her:
Dim cb As CheckBox = CType(item.FindControl("checkboxid"), CheckBox)
(Du skal så i din template have givet checkbox'en id'et checkboxid.
Mvh
Avatar billede ktolbod Nybegynder
23. maj 2006 - 09:06 #7
Problemet er at jeg har checkboxen i en datalist, hvor hvert item jo så har en checkbox. Jeg mangler så at give checkboxen et unikt id fra databasen, da jeg vil have af vide hvilket item i datalisten brugeren har trykket på.

Som du tidligere skrev, giver følgende mig adgang til den checkbox der er trykket på:
Dim cb As CheckBox = CType(sender, CheckBox)

Men jeg vil altså have fat i det ID som det item har. Jeg kan dog ikke helt gennemskue hvor jeg skal skrive ID'et henne, om det er på checkboxen eller i datalisten?

Håber det giver det mening.
Avatar billede snepnet Nybegynder
23. maj 2006 - 10:22 #8
Jeg synes du skal lægge databaseid'et på selve dit item. En datalist understøtter det direkte ved at du kan angive en nøgle på listen (DataKey), som du så kan hente fra koden.
Mvh
Avatar billede ktolbod Nybegynder
23. maj 2006 - 12:07 #9
Jeg bliver ved med at være spørge jørgen.
Jeg har fat i den rigtige CheckBox og jeg har fat i datalistens datakeys med følgende kode:
Dim cb As CheckBox = CType(sender, CheckBox)
Dim dl As DataList = DirectCast(VineFormView.FindControl("Datalist1"), DataList)
Dim ImageID As Integer = dl.DataKeys(1)

Men hvordan er jeg istand til hente det aktive item, som jeg skal bruge til at hive fat i den rigtige datakey med : dl.DataKeys(i) ?
Avatar billede snepnet Nybegynder
23. maj 2006 - 13:47 #10
Ja - det er måske heller ikke specielt intuitivt.

Du kan hente nøglen udfra dit index, så hvis du bruger koden fra før, hvor du henter det aktuelle item udra senders NamingContainer, kan du vha. det, hente nøglen:

int id = (int)dl.DataKeys(item.ItemIndex);

Mvh
Avatar billede ktolbod Nybegynder
24. maj 2006 - 16:45 #11
thanx
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