根据用户输入的条件查找列表视图项

时间:2016-11-03 17:48:31

标签: vb.net

我有很多项目的列表视图,我的列表视图中有一个名为Age的列。我想使用2个文本框来搜索具有特定年龄的项目。例如,我输入textbox1值20和textbox2 - 30.它应该在列表视图中显示年龄为20,21,22,...... 30的项目。 / p>

2 个答案:

答案 0 :(得分:0)

循环浏览您的集合,获取项目值并进行评估。如果匹配条件 - 将其添加到listview

Dim min as integer = Integer.Parse(txtMin.Text)
Dim max as integer = Integer.Parse(txtMax.Text)
For Each person as PersonInfo in myPersonList
    If person.Age >= min AndAlso person.Age <= max Then
        myListview.Items.Add(. . . . . . )
    End If
Next

如果你已经列出了listview中的项目,你就可以做到这一点

For Each item as ListViewItem in myListview.Items
    ' here it is depends on where is your column located
    Dim age As Integer = Integer.Parse(item.[SubItems(..)].Text)
    If age >= min AndAlso age <= max Then
        item.BackColor = Color.Yellow ' - highlight items that meet criteria 
    End If
Next

请记住Item有文字,可以Subitems。取决于您的专栏在哪里 - 我们在您的帖子中不知道这一点 - 您需要使用item.SubItems(i).Text

现在,我还没有尝试过,但必须有效。列表视图的动态加载

Dim itemList As List(Of ListViewItem) ' -- your item database so to speak
' Add your items to it and not to list view
' Then, when button_click happens, use LINQ
myListview.Items.Clear()
itemList.Where(
    Function(item) 
        Dim age As Integer = Convert.ToInt32(item.[SubItems(..)].Text)
        Return (age >= min AndAlso age <= max)
    End Function).ToList().ForEach(Sub(item) myListview.Items.Add(Item))

这将仅使用符合条件的项目填充列表

答案 1 :(得分:0)

如果您有两个列表视图,一个显示年龄,另一个显示您在min&amp ;;最大,你可以使用下面的代码。

Dim min As Integer = CInt(txtMin.Text)
Dim max As Integer = CInt(txtMax.Text)
For Each itm In CoursesList.Items
     If CInt(itm) > min And CInt(itm) < max Then
         CoursesList.Items.Add(itm)
     End If
Next