Avatar billede websam Nybegynder
19. september 2005 - 11:26 Der er 14 kommentarer og
1 løsning

For Each Next i forbindelse med en listbox

Hejsa,

jeg skal have lavet en for each... next i forbindelse med en listbox der skal gemmes i database. Jeg havde forstillet mig noget i stilen med dette :

Dim Item As String
Dim i As Integer = lst_Link.SelectedIndex
Dim j As String = lst_Link.SelectedValue
For Each Item In lst_Link.Items
    '--- Kode der gemmer i database
Next

i og j skal representere Id og Tekst fra listbox'en. Ser det helt tosset ud eller misser jeg noget ?

/Websam
Avatar billede pfp Nybegynder
19. september 2005 - 11:48 #1
Det er næsten rigtigt. Du skal nok have tildelingen til din variabel ind i selv for-løkken..ellers vil du bare hive det samme første-valgte resultat ud hver gang.
Avatar billede pfp Nybegynder
19. september 2005 - 11:50 #2
Dim Item As String
Dim i As Integer = 0
Dim j As String
For Each Item In lst_Link.Items
    i = lst_Link.SelectedIndex;
    j = lst_Link.SelectedValue;
   
    '--- GEM i og j i din database
Next
Avatar billede websam Nybegynder
19. september 2005 - 11:50 #3
Forstået på denne måde :

Dim Item As String
For Each Item In lst_Link.Items
    Dim i As Integer = lst_Link.SelectedIndex
    Dim j As String = lst_Link.SelectedValue
    '--- Kode der gemmer i database
Next

???

/Websam
Avatar billede websam Nybegynder
19. september 2005 - 11:51 #4
ok
Avatar billede pfp Nybegynder
19. september 2005 - 11:52 #5
Alt efter hvilken liste det du skal gennemløbe kan du også vælge en decideret type at gennemløbe efter.

F.eks. i et listView:
For Each ListViewItem in myListView.Items
  ---
Next
Avatar billede pfp Nybegynder
19. september 2005 - 11:53 #6
Ja du må ikke have selve erklæringen inde i løkken. Den skal erklæres udenfor og så skal du tildele en værdi indeni.
Avatar billede websam Nybegynder
19. september 2005 - 11:54 #7
cool jeg får lige testet så vender jeg tilbage
Avatar billede websam Nybegynder
19. september 2005 - 12:24 #8
Ok med følgende får jeg denne fejl :

Dim Item As String
        Dim i As Integer = 0
        Dim j As String
        For Each Item In lst_Link.Items
            i = lst_Link.SelectedIndex
            j = lst_Link.SelectedValue
            '--- Sender til tjek for at se om der angivet nogle.
            Dim bolError As Boolean
            Dim strError As String
            bolError = objTextBiz.CheckListBox(i, j, "Link")
            If Not bolError Then
                strError = "Duer ikke !"
            Else
                Response.Redirect("?m=text&a=edit")
            End If
        Next

Fejl :

Cast from type 'ListItem' to type 'String' is not valid.

Denne linie :

For Each Item In lst_Link.Items

Altså kan jeg ikke lave "Item As String". Jeg forsøgte mig så med "Item As ListItem", men så sker der slet ingen ting ingen opdateringer eller indsættelse i database og da den bliver stående på samme side og ikke redirectes er der et eller andet jeg overser ?

/Websam
Avatar billede websam Nybegynder
19. september 2005 - 12:42 #9
Nå jeg havde en mindre fejl i min Insert statement og ved at ændre min løkke lidt får jeg nu noget i databasen, men der er stadigt noget galt for den gemmer kun den sidste i listbox ?

Her har du koden :

Dim Item As ListItem
Dim i As Integer = 0
Dim j As String
For Each Item In lst_Link.Items
    i = lst_Link.Items(i).Value
    j = lst_Link.Items(i).Text
    '--- Sender til tjek for at se om der angivet nogle.
    Dim bolError As Boolean
    Dim strError As String
    bolError = objTextBiz.CheckListBox(i, j, "Link")
    If Not bolError Then
        strError = "Duer ikke !"
        Response.Write(strError)
        Response.End()
    Else
        Response.Redirect("?m=text&a=edit")
    End If
Next
Avatar billede jokkejensen Novice
19. september 2005 - 13:02 #10
"i" skal vel tælle op

og response.redirect for jo applikationen til at videre sende siden, og derfor kun én post..
Avatar billede websam Nybegynder
19. september 2005 - 13:10 #11
ok hvis jeg indsætter i = i + 1 efter end if og deaktivere redirect får jeg denne fejl :

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

/websam
Avatar billede websam Nybegynder
19. september 2005 - 13:12 #12
ups i denne linie :

i = lst_Link.Items(i).Value
Avatar billede snepnet Nybegynder
19. september 2005 - 13:57 #13
hvad med :

Dim li_Value As String
Dim li_Text As String
For Each li As Item In lst_Link.Items
    li_Value = li.Value
    li_Text = li.Text
    '--- Sender til tjek for at se om der angivet nogle.
    Dim bolError As Boolean
    Dim strError As String
    bolError = objTextBiz.CheckListBox(i, j, "Link")
    If Not bolError Then
        strError = "Duer ikke !"
        Response.Write(strError)
        Response.End()
    Else
        Response.Redirect("?m=text&a=edit")
    End If
Next

både value og text fra dit listitem er string-typer, så konverteringen skal klares på et eller andet tidspunkt - enten før, under eller i metodekaldet hvor du pt. har i og j som parametre.

mvh
Avatar billede websam Nybegynder
19. september 2005 - 14:00 #14
Med lidt modifikation af snepnets idé lykkedes det at få det lavet :

Dim Item As ListItem
Dim intValue As Integer
Dim strText As String
For Each Item In lst_Link.Items
    intValue = Item.Value
    strText = Item.Text
    '--- Sender til tjek for at se om der angivet nogle.
    Dim bolError As Boolean
    Dim strError As String
    bolError = objTextBiz.CheckListBox(intValue, strText, "Link")
    If Not bolError Then
        strError = "Duer ikke !"
        Response.Write(strError)
        Response.End()
    Else
        'Response.Redirect("?m=text&a=edit")
    End If
Next

Mangler så bare lige at få flyttet min redirect så spiller det sikkert max :o)

Smid et svar til dem af jer der vil have point !

/Websam
Avatar billede snepnet Nybegynder
19. september 2005 - 14:56 #15
ok
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