列表框包含选定的 ID

ListBox Contains Selected ID

我很难让包含工作,我想做的是获取 ListBox 并在我 select 之前查看项目列表中是否有 ID 号,所以像这样;

Session("SavedID") = 3
if ListBoxAccess.Items.Contains(Convert.ToInt32(Session("SavedID"))) Then
        ListBoxAccess.SelectedValue = Session("SavedID")
End If

if ListBoxDenied.Items.Contains(Convert.ToInt32(Session("SavedID"))) Then
        ListBoxDenied.SelectedValue = Session("SavedID")
End If

您可以使用foreach来检查项目,并通过值设置选中的项目

  Dim savedId = Convert.ToInt32(Session("SavedID"))
  For Each item As ListItem In ListBoxAccess.Items
    If item.Value = savedId Then
        item.Selected = True
    End If
  Next

嗯,我希望数据类型不匹配。您可以:

  1. 看,一个列表框是否包含一个ListBoxItem,或者

  2. 将 listBoxItem 的 Value 与另一个值

  3. 进行比较

所以您可以创建一个项目来检查,例如:

If ListBoxAccess.Items.Contains(ListBoxDenied.Items.Item) Then 
    ...
Else

或者你必须遍历列表框的每一项并找出你自己,即

For Each item in ListBoxAccess.Items
   Dim ValInt as Int32 = CInt(item)
   ...
Next

首先感谢你们的帮助,两者似乎都工作正常,但是我想出了一个我刚刚使用的更短的答案,它不使用包含。

Session("SavedID") = 3
if ListBoxAccess.Items.FindByValue(Session("SavedID")) IsNot Nothing Then
    ListBoxAccess.SelectedValue = Session("SavedID")
End If

if ListBoxDenied.Items.FindByValue(Session("SavedID")) IsNot Nothing Then
    ListBoxDenied.SelectedValue = Session("SavedID")
End If

经过测试效果很好!