通过消除除 seacrhed 行之外的所有其他行,通过文本框在已填充的列表视图中搜索

Posted

技术标签:

【中文标题】通过消除除 seacrhed 行之外的所有其他行,通过文本框在已填充的列表视图中搜索【英文标题】:Search in already filled listview through textbox by eliminating all other rows except seacrhed row 【发布时间】:2021-11-16 01:45:34 【问题描述】:

我已经从 DataTable dt4 填充了一个 ListView。我已经在全球范围内声明,下面是我的代码,但代码没有给出搜索到的字符串,而是在任何按键上再次加载。

请帮我写代码

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    conn = GetConnect()
    conn.Open()
    
    dt4.Select("ServiceName like '%" + TextBox1.Text + "%' ")

    With ListView3
        .View = View.Details
        .GridLines = True
        .Columns.Clear()
        .Items.Clear()
        .Columns.Add(" ", 30)
        .Columns.Add("CPT Code", 80, HorizontalAlignment.Left)
        .Columns.Add("Service Name", 350, HorizontalAlignment.Left)

        For Each row As DataRow In dt4.Rows
            'Add Item to ListView.
            Dim item As ListViewItem = New ListViewItem
            item.SubItems.Add(row("CPTCode").ToString())
            item.SubItems.Add(row("ServiceName").ToString())                
            item.Checked = False
            .Items.Add(item)
            item = Nothing
        Next
    End With

End Sub

【问题讨论】:

您的意思是dt4 再次加载还是ListView3 再次加载? 我不知道,但它再次加载满行而不搜索任何字符串 是的,你用it这个词,可以对应它们中的任何一个,我问的是哪个 无论如何在全局声明时如何刷新 dt 表示数据表 我从未使用过 DataTable,但我快速搜索了一下,可能找到了答案,请参阅我的答案。此外,您似乎为 TextBox 中的每次击键创建了一个 [database?] 连接,这非常浪费,但我看不到 dt4 是如何更新的,但我也不知道 DataTables。 【参考方案1】:

Select 的结果应该有你想要的行

Dim rows = dt4.Select("ServiceName like '%" + TextBox1.Text + "%' ")

For Each row As DataRow In rows

来自DataTable.Select

【讨论】:

我的数据表我已经全局声明了,现在的问题是相同的数据在 Listview 中重复,如何清除旧数据并将新数据输入 listview

以上是关于通过消除除 seacrhed 行之外的所有其他行,通过文本框在已填充的列表视图中搜索的主要内容,如果未能解决你的问题,请参考以下文章

删除除具有最大值的行之外的所有行

如何从文件夹中添加除iverilog命令行指令中的一个文件之外的所有文件?

MySQL -- 标记除 1 个匹配行之外的所有行

如何从表中删除除前两个和最后一个之外的所有行?

MySQL - 查询除第一行之外的所有行[重复]

删除除 Group 之外的所有 SQL 行