ASP.NET(VB) 列表框未将所有选定项目移动到其他列表框
ASP.NET(VB) Listboxes are not moving all the selected items to other Listboxes
DivisionListBox 用于 select SitesListbox 中的值,如下所示:当您 select DivisionListBox 中的一个项目时,它将 select SitesListbox 上匹配相同的所有项目值。
SiteListbox 值被 selected 后,我使用 SiteButton 将所有 selected 值成功移动到空的 StoreslistBox。
当我在 SiteListbox 或 StoreslistBox 上手动 select 多个项目并按 SiteButton 或 StoreButton 在列表框之间移动项目时,我的问题就出现了。它要么一次移动一个项目,要么移动一些 selected 项目,但它永远不会移动所有 selected 项目(可以通过标签跟踪)。
是什么导致了这个问题,可能的解决方案是什么?
我的代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
DivisionSelection()
End Sub
Private Sub DivisionSelection()
If DivisionListBox.SelectedValue IsNot Nothing Then
SitesListBox.SelectionMode = ListSelectionMode.Multiple
For Each item As ListItem In SitesListBox.Items
If item.Value = DivisionListBox.SelectedValue Then
item.Selected = True
End If
Next
End If
Dim x As Integer = 0
Dim Siteitem As ListItem
For Each Siteitem In SitesListBox.Items
If Siteitem.Selected Then
x += 1
Label1.Text = x
End If
Next
End Sub
Protected Sub SiteButton_Click(sender As Object, e As EventArgs) Handles SiteButton.Click
StoresListBox.SelectionMode = ListSelectionMode.Multiple
While SitesListBox.SelectedItem IsNot Nothing
StoresListBox.Items.Add(SitesListBox.SelectedItem)
SitesListBox.Items.Remove(SitesListBox.SelectedItem)
End While
'counts the selected items
Dim x As Integer = 0
Dim Siteitem As ListItem
For Each Siteitem In SitesListBox.Items
If Siteitem.Selected Then
x += 1
Label1.Text = x
End If
Next
End Sub
Protected Sub StoreButton_Click(sender As Object, e As EventArgs) Handles StoreButton.Click
StoresListBox.SelectionMode = ListSelectionMode.Multiple
While StoresListBox.SelectedItem IsNot Nothing
SitesListBox.Items.Add(StoresListBox.SelectedItem)
StoresListBox.Items.Remove(StoresListBox.SelectedItem)
End While
'counts the selected items
Dim x As Integer = 0
Dim Storeitem As ListItem
For Each Storeitem In SitesListBox.Items
If Storeitem.Selected Then
x += 1
Label2.Text = x
End If
Next
End Sub
我将所选项目添加到列表;然后循环遍历列表以进行添加和删除。当一个集合或索引在循环中被弄乱时,它可能会产生意想不到的结果。
Protected Sub Button1_Click(ByVal sender As Object, e As System.EventArgs) Handles Button1.Click
Dim lstItems As New List(Of ListItem)
For Each item As ListItem In ListBox1.Items
If item.Selected Then
lstItems.Add(item)
End If
Next
'It wasn't clear if you wanted the items to remain selected after moving.
ListBox1.ClearSelection()
Debug.Print(lstItems.Count.ToString)
For Each item As ListItem In lstItems
ListBox2.Items.Add(item)
ListBox1.Items.Remove(item)
Next
End Sub
DivisionListBox 用于 select SitesListbox 中的值,如下所示:当您 select DivisionListBox 中的一个项目时,它将 select SitesListbox 上匹配相同的所有项目值。
SiteListbox 值被 selected 后,我使用 SiteButton 将所有 selected 值成功移动到空的 StoreslistBox。
当我在 SiteListbox 或 StoreslistBox 上手动 select 多个项目并按 SiteButton 或 StoreButton 在列表框之间移动项目时,我的问题就出现了。它要么一次移动一个项目,要么移动一些 selected 项目,但它永远不会移动所有 selected 项目(可以通过标签跟踪)。
是什么导致了这个问题,可能的解决方案是什么?
我的代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
DivisionSelection()
End Sub
Private Sub DivisionSelection()
If DivisionListBox.SelectedValue IsNot Nothing Then
SitesListBox.SelectionMode = ListSelectionMode.Multiple
For Each item As ListItem In SitesListBox.Items
If item.Value = DivisionListBox.SelectedValue Then
item.Selected = True
End If
Next
End If
Dim x As Integer = 0
Dim Siteitem As ListItem
For Each Siteitem In SitesListBox.Items
If Siteitem.Selected Then
x += 1
Label1.Text = x
End If
Next
End Sub
Protected Sub SiteButton_Click(sender As Object, e As EventArgs) Handles SiteButton.Click
StoresListBox.SelectionMode = ListSelectionMode.Multiple
While SitesListBox.SelectedItem IsNot Nothing
StoresListBox.Items.Add(SitesListBox.SelectedItem)
SitesListBox.Items.Remove(SitesListBox.SelectedItem)
End While
'counts the selected items
Dim x As Integer = 0
Dim Siteitem As ListItem
For Each Siteitem In SitesListBox.Items
If Siteitem.Selected Then
x += 1
Label1.Text = x
End If
Next
End Sub
Protected Sub StoreButton_Click(sender As Object, e As EventArgs) Handles StoreButton.Click
StoresListBox.SelectionMode = ListSelectionMode.Multiple
While StoresListBox.SelectedItem IsNot Nothing
SitesListBox.Items.Add(StoresListBox.SelectedItem)
StoresListBox.Items.Remove(StoresListBox.SelectedItem)
End While
'counts the selected items
Dim x As Integer = 0
Dim Storeitem As ListItem
For Each Storeitem In SitesListBox.Items
If Storeitem.Selected Then
x += 1
Label2.Text = x
End If
Next
End Sub
我将所选项目添加到列表;然后循环遍历列表以进行添加和删除。当一个集合或索引在循环中被弄乱时,它可能会产生意想不到的结果。
Protected Sub Button1_Click(ByVal sender As Object, e As System.EventArgs) Handles Button1.Click
Dim lstItems As New List(Of ListItem)
For Each item As ListItem In ListBox1.Items
If item.Selected Then
lstItems.Add(item)
End If
Next
'It wasn't clear if you wanted the items to remain selected after moving.
ListBox1.ClearSelection()
Debug.Print(lstItems.Count.ToString)
For Each item As ListItem In lstItems
ListBox2.Items.Add(item)
ListBox1.Items.Remove(item)
Next
End Sub