ListBox包含选定的ID

时间:2018-05-18 11:51:07

标签: asp.net vb.net listbox contains

我很难让包含工作,我想要做的是获取ListBox,看看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

3 个答案:

答案 0 :(得分:1)

您可以使用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 :(得分:1)

好吧,我期待数据类型不匹配。你可以:

  1. 查看列表框是否包含 ListBoxItem ,或

  2. 将listBoxItem的 与其他值进行比较

  3. 因此,您可以创建一个项目来检查:

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

    或者您必须遍历列表框中的每个项目并找出自己,即

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

答案 2 :(得分:1)

首先感谢你的帮助,两者似乎都运行正常,但是我想出了一个较短的答案,我刚刚使用过,它没有使用包含。

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

经测试很有效!