19. september 2005 - 11:26Der 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 ?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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.
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
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 ?
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
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.
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)
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.