Eli pitäisi saada checkedlistbox ruksaamaan käyttäjän aikaisemmin ruksaamansa tiedot. checkedlistboxin tiedot on haettu tietokannasta ja valuemember erottelee ne. Ruksattujen kohtien valuememberit on tallennettu aikaisemmin jo tietokantaan.
Nyt pitäisi saada ruksittua ne kohdat jotka käyttäjä on aikaisemmin ruksinut.
Aattelin tehdä sen loopilla, mutta siinä kusee nyt joku.
Eli aina kun myReader lukee yhden tiedon, pitäisi sitä verrata kaikkiin Checkedlistboxin ruksattavien kohtien ValueMemberiin ja mikäli se on sama ruksata se kohta, muuten myReader lukee seuraavan tiedon ja taas sitä pitäisi verrata kaikkiin Checkedlistboxin kohtiin.
Tuossa olis osviittaa miten sen meinasin tehdä, mutta jostain syystä tuo looppi rakenne ei nyt pelaa.
checked = CheckedListkoulut.Items.Count While myReader.Read iii = myReader.Item("koulu").ToString For i = 0 To i = checked CheckedListkoulut.SelectedIndex = i ii = CheckedListkoulut.SelectedValue If iii = ii Then CheckedListkoulut.SetItemCheckState(i, ChecksState.Checked) Else End If Next End While
Muistaakseni VB:n syntaksi, jos basic ei ole paljoa muuttunut.
For i = 0 To checked
Todennäköisesti kuitenkin silmukka pyörähtää yhden kierroksen liikaa, joten se menneen:
For i = 0 To checked-1
Muuta koodia en osaa kommentoida, kun ite ohjelmoin C#:llä ja Monolla, mutta äkkiseltään näyttäisi olevan ainakin oikeaan suuntaan.
Tosin vb.NET:ssä merkkijonovertailut taitavat mennä jotenkin näin:
If iii.Equals(ii) Then
Ainakin C#:ssä joutuu vertailut tekemään funkkarin kautta, jotta vertaillaan arvoja eikä viitteiden osotteita.
Edit sehän voisi mennä myös jotenkin näin:
checked = CheckedListkoulut.Items.Count While myReader.Read iii = myReader.Item("koulu").ToString CheckedListkoulut.SetItemCheckState(CheckedListkoulut.Items.IndexOf(iii),ChecksState.Checked) End While
En tiedä toimiiko, mutta kokeilemisen arvoinen yritys.
Vastaampa ite omaan kysymykseen
checked = CheckedListkoulut.Items.Count While myReader.Read iii = myReader.Item("koulu").ToString For i = 0 To checked - 1 CheckedListkoulut.SelectedIndex = i ii = CheckedListkoulut.SelectedValue.ToString If iii.Equals(ii) Then CheckedListkoulut.SetItemChecked(i, CheckState.Checked) End If Next i End While
Aihe on jo aika vanha, joten et voi enää vastata siihen.