如何在一个文本框中搜索多个值并在 DataGridView vb.net 中显示

2024-05-06

有没有一种方法可以在一个文本框中搜索/过滤多个值?我正在 OPIS 列中搜索两个或多个不同的单词、短语。

Example:搜索 sveder,然后搜索 din 374,然后搜索 TiN,结果将是具有此描述的所有项目

我有这段代码,但是当搜索与描述不完全相同时就会出现问题。数据库是从Access导入的。

    Public Class Form1
    Private Sub PodatkiBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
        Me.Validate()
        Me.PodatkiBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.PodatkiDataSet)

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'PodatkiDataSet.Podatki' table. You can move, or remove it, as needed.
        Me.PodatkiTableAdapter.Fill(Me.PodatkiDataSet.Podatki)

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        PodatkiBindingSource.Filter = "(Convert(KODA, 'System.String') LIKE '" & TextBox1.Text & "%')" &
                     "OR (OPIS LIKE '%" & TextBox1.Text & "%')"

    End Sub
End Class

就在这里。例如:

  • 在搜索中TextBox, 用逗号等分隔符分隔搜索词,分割字符串并创建它们的数组。
  • 将目标列放入另一个数组中。
  • 使用嵌套循环来形成过滤器StringBuilder object.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If TextBox1.Text.Trim().Length = 0 Then
        PodatkiBindingSource.Filter = Nothing
    Else
        Dim sb = New System.Text.StringBuilder()
        Dim cols = {"KODA", "OPIS"}
        Dim words = TextBox1.Text.Split({","}, StringSplitOptions.RemoveEmptyEntries).
            Where(Function(x) x.Trim().Length > 0)

        For i = 0 To cols.Count - 1
            For j = 0 To words.Count - 1
                sb.Append($"{cols(i).Trim()} LIKE '%{words(j).Trim()}%'")
                If j <> words.Count - 1 Then sb.Append(" OR ")
            Next
            If i <> cols.Count - 1 Then sb.Append(" OR ")
        Next
        PodatkiBindingSource.Filter = sb.ToString()
    End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在一个文本框中搜索多个值并在 DataGridView vb.net 中显示 的相关文章

  • 如何在.NET 中编写安全/正确的多线程代码?

    今天我必须修复一些使用线程的旧 VB NET 1 0 代码 问题在于从工作线程而不是 UI 线程更新 UI 元素 我花了一些时间才发现可以使用 InvokeRequired 断言来查找问题 除了上面提到的并发修改问题之外 还可能遇到死锁 竞
  • VB SQL 语句未选择正确的行

    我试图使用 SELECT 语句在我的数据库中 选择 一个人 但它没有选择正确的人 我也不确定为什么 我正在使用访问数据库 数据库连接代码 Imports System Data OleDb Module Database Connectio
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 如何使用 VB.NET 打开受密码保护的共享网络文件夹?

    我需要在网络上打开受密码保护的共享文件夹才能访问 Access 97 数据库 如何打开文件夹并输入密码 在这里找到http www mredkj com vbnet vbnetmapdrive html http www mredkj co
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 项目:为了评估索引属性,该属性必须经过限定,并且参数必须由用户显式提供。

    我创建了多个组合框 从中我从创建的存储过程中提取了每个组合框的数据 所有这些框一直工作到今天早些时候 其中 2 个组合框停止工作 检查行的 立即窗口 和列 我得到了列的结果 但是当我检查列时 例如 dsContactTitles Table
  • 从字体到跨度(大小和颜色)和背面的正则表达式(VB.NET)

    我正在寻找一个正则表达式 可以将我的字体标签 仅具有大小和颜色属性 转换为具有相关内联CSS的span标签 如果有帮助的话 这将在 VB NET 中完成 我还需要一个正则表达式来实现相反的效果 下面详细说明的是我正在寻找的转换示例 font
  • 设置国际货币格式

    我有一个 asp net 应用程序 我们正在 全球化 过程中 我将 currentculture 和 currentUICultre 设置为适当的值 并且货币按预期使用货币格式显示 即 FormatCurrency nPrice 产生 en
  • 将签名位图转换为签名字符串(很奇怪的一个)

    基本上我需要将位图图像转换为字符串 但这不是常见的 困境在于该字符串由两部分组成 1 积分 2 线路 我需要将图像转换为由 分隔的两个部分 我得到的一个例子是 221A 221A270A270A25032503200720071716171
  • VB.NET 中的 TextChanged 事件

    我有两个基本文本框 比方说 A 和 B 我希望在一个文本框中输入内容以清除另一个文本框中的任何输入 例如 在 A 中键入 123 现在在 B 中键入 456 B 应包含 456 A 应为空 但是 我在 B 中收到 56 而 A 为空 似乎
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • 通过名称访问表单的控件

    不确定这篇文章的标题是否准确 我试图通过在循环中 组合 它们的名称来访问 Windows 窗体控件及其属性 但我似乎找不到相关文档 使用VB net 基本上 假设我有以下内容 Dim myDt As New DataTable Dim ro
  • vb6 中双精度计算的值不正确

    当在 vb6 中添加 2 个值时 我得到一些奇怪的行为 当在立即窗口中针对不同情况打印变量 sum 双精度型 时 如下所示 我得到的结果为 sum 0 sum 0 sum 0 sum 74 46 0 41 sum 74 87 sum 97
  • 使用 JSON.net 反序列化

    我对 json JSON net 等都很陌生 在这里阅读类似的问题后 我无法让我的代码工作 我的错误到底是什么 我监督了什么 出于测试目的是否可以跳过 链接 和 元 类 或者我是否必须定义每个属性 我得到以下 REST 输出 codes h
  • VB.NET 中的类型比较

    如何比较 VB NET 中的类型数据类型 我的代码 Private Function Equal ByVal parameter As String ByVal paramenterName As String ByVal dataType
  • 简单的if检查多个值vb

    在Sql中我们可以像这样过滤 SELECT FROM 表名 WHERE 列名 IN firstValue secondValue 如何在VB Net中检查 有简单的方法吗 或者 只是 If variable firstValue Or va
  • 如何确定任务栏位于哪个屏幕

    Screen PrimaryScreen 并不总是有效 因为在多显示器设置中 用户可能会将其任务栏移动到主屏幕以外的屏幕 找到具有最小工作区域的屏幕也不起作用 因为可能存在具有不同分辨率的显示器 有什么办法可以通过任务栏定位屏幕吗 您可以使
  • 您可以将委托函数作为可选参数传递吗?

    我知道在 Visual Basic 中 委托函数不能contain可选参数 但是方法可以将委托作为可选参数吗 我想做的是这样的 Delegate Sub MyDelegate ByVal input As String Sub MyDele
  • 根据值从绿色到红色[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一个在 vb net 中返回从红色 值 0 到绿色 值 100 的颜色的函数 另外 我需要一种方法来确定字体的颜色应该是白色还是
  • 检查 listbox1 中是否已存在某个项目

    在 form1 中 我有两个列表框 listbox1 listbox2 加载按钮和保存按钮 此代码会将 listbox1 selecteditem 写入 txt 文件 然后 loadbutton 将加载信息 但在 listbox2 中我希望

随机推荐