Alloha.. här igen..
Försöker mig på att köra följande kod:
Private Sub Button2_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ServerClick
If Not (dlAllTechnicans.SelectedItem Is Nothing) Then
Dim ListItem As ListItem
For Each ListItem In dlAllTechnicans.Items
If ListItem.Selected = True Then
dlSelectedTechnicans.Items.Add(ListItem.Value.ToString)
dlAllTechnicans.Items.Remove(ListItem.Value.ToString)
End If
Next
End If
End Sub
Tanken är att jag flyttar de värden som är markerade i textbox1 till textbox2 och sen ta bort det markerade värdet i textbox1. Problemet är bara att jag får ett felmeddelande som lyder såhär:
Collection was modified; enumeration operation may not execute.
Förstod inte riktigt hur det löste sig på den tråden (snart semester ju :r), men var det genom att lägga över alla värden att ta bort i en annan lista och sen ta bort dem ur den första listan?
Jag brukar alltid lösa såna här problem genom en for loop som loopar från count och ner till 0. Då kommer man inte att ta bort ett objekt som ligger före i listan och f*a upp den.
Det jag ville visa med tråden var att man ska kunna sätt ett form av lås på den så att man kan ta bort medan man loopar igenom den, har för mig att det var så iaf =)
Ett förslag på lösning som jag kom på nu är att man skulle kunna skapa en ArrayList där man slänger in alla värden i som man skall tabort/flytta och sedan loopar man igenom ArrayListen så man kan tabort/flytta värdena.
Ett snabbt exempel, utan CB som funkar direkt som en .aspx-fil:
<%@ Page Language="VB" %>
<script runat="server">
Public Sub Page_Load(Sender As Object, E As EventArgs)
If (IsPostBack = False) Then
Dim i As Integer
'## -- populate left listbox --
For i = 0 TO 9
lboxLeft.Items.Add(New ListItem("Left " + i.ToString))
Next i
'## -- populate right listbox --
For i = 0 TO 9
lboxRight.Items.Add(New ListItem("Right " + i.ToString))
Next i
End If
End Sub
Sub btnMoveRight_Click(sender As Object, e As EventArgs)
lboxRight.SelectedIndex = -1
If (lboxLeft.SelectedIndex > -1) Then
lboxRight.Items.Add(lboxLeft.Items(lboxLeft.SelectedIndex))
lboxLeft.Items.Remove(lboxLeft.Items(lboxLeft.SelectedIndex))
End If
lboxLeft.SelectedIndex = -1
End Sub
Sub btnMoveLeft_Click(sender As Object, e As EventArgs)
lboxLeft.SelectedIndex = -1
If (lboxRight.SelectedIndex > -1) Then
lboxLeft.Items.Add(lboxRight.Items(lboxRight.SelectedIndex))
lboxRight.Items.Remove(lboxRight.Items(lboxRight.SelectedIndex))
End If
lboxRight.SelectedIndex = -1
End Sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<table>
<tbody>
<tr>
<td>
<asp:ListBox id="lboxLeft" runat="server" Width="130px"></asp:ListBox>
</td>
<td>
<asp:Button id="btnMoveRight" onclick="btnMoveRight_Click" runat="server" Text=">>"></asp:Button>
<br />
<asp:Button id="btnMoveLeft" onclick="btnMoveLeft_Click" runat="server" Text="<<"></asp:Button>
</td>
<td>
<asp:ListBox id="lboxRight" runat="server" Width="130px"></asp:ListBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</table>
<!-- Insert content here -->
</form>
</body>
</html>
cya,
/PatrikB
256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2