Hej! Jag glömde att skriva att när jag väljer flera värden i listboxen och uppdaterar databaser så försvinner dessa värden från listan, därav problemet. När antalet i listboxen är under 100 så kommer felen. Jag antar att du databinder din lista i Page_Load. Har du satt dit Tack för tipset, löste problemet genom att göra om koden lite:Listbox
Har en listbox som hämtar data från en databas. Där ska man kunna välja flera olika objekt och för varje objekt som väljs ska ett värde från en dropdownlist läggas in. Så långt fungerar det. Problemet är när antalet objekt i listboxen understiger 100, då blir det fel. Försökte lösa det med if-satsen nedan, men den uppdaterar inte (får inget felmeddelande). Vore mycket tacksam för hjälp. Det är ASP.NET och VB.
Sub Update(sender As Object, e As System.EventArgs)
Dim count2 As Integer = "0"
Do While count2 < "100"
If ListBox2.Items(count2).Selected
If ListBox2.Items(count2).Text <> ""
Dim connectionString As String = "server='(local)'; trusted_connection=true; database='data'"
Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "UPDATE [data] SET [Ansvarig]=@Ansvarig, [Utdelat]='1' WHERE ([data].[Nummer] = @CheckBoxList1)"
Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim dbParam_namn As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_namn.ParameterName = "@Ansvarig"
dbParam_namn.Value = DropDownList1.SelectedItem.Value
dbParam_namn.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_namn)
Dim dbParam_pass As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_pass.ParameterName = "@CheckBoxList1"
dbParam_pass.Value = ListBox2.Items(count2).Text
dbParam_pass.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_pass)
Dim rowsAffected As Integer = 0
dbConnection.Open
Try
rowsAffected = dbCommand.ExecuteNonQuery
Finally
dbConnection.Close
End Try
count2 = count2 + 1
Else
count2 = count2 + 1
End If
Else
count2 = count2 + 1
End If
Loop
Response.Redirect("mission.aspx")
End SubSv: Listbox
Sv: Listbox
<code>
If Not IsPostBack Then
</code>
så att du inte databinder igen när du gör postback:en för Update?
Det skulle i så fall förklara varför valda värden försvinner.
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Listbox
Dim list As Integer = ListBox1.Items.Count
Dim count As Integer = "0"
Do While count < list
If ListBox1.Items(count).Selected Then
Dim connectionString As String = "server='(local)'; trusted_connection=true; database='data'"
Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)
Dim queryString As String = "UPDATE [data] SET [Ansvarig]=@Ansvarig, [Utdelat]='1' WHERE ([data].[Nummer] = @CheckBoxList1)"
Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim dbParam_namn As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_namn.ParameterName = "@Ansvarig"
dbParam_namn.Value = DropDownList1.SelectedItem.Value
dbParam_namn.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_namn)
Dim dbParam_pass As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter
dbParam_pass.ParameterName = "@CheckBoxList1"
dbParam_pass.Value = ListBox1.Items(count).Text
dbParam_pass.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_pass)
Dim rowsAffected As Integer = 0
dbConnection.Open
Try
rowsAffected = dbCommand.ExecuteNonQuery
Finally
dbConnection.Close
End Try
count = count + 1
Else
count = count + 1
End If
Loop