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 ?
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
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.