有没有一种方法可以在一个文本框中搜索/过滤多个值?我正在 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(使用前将#替换为@)