.RowFilter

时间:2018-05-08 20:24:18

标签: .net vb.net

我试图合并一些过滤器。

SearchString = "Col1 LIKE '%" & TextBox1.Text & "%' OR Col2 LIKE '%" & TextBox2.Text & "%' OR Col3 LIKE '%" & TextBox3.Text & "%'"

以上这一行有效,但是当我添加如下所示的其他内容时,过滤器无法正常运行。有人有什么想法吗?

SearchString = "Col1 LIKE '%" & TextBox1.Text & "%' OR Col2 LIKE '%" & TextBox2.Text & "%' OR Col3 LIKE '%" & TextBox3.Text & "%' AND Col3 = 1 AND Col3 = 'TestingString'"

以及我如何应用RowFilter:

myDataView.RowFilter = SearchString

1 个答案:

答案 0 :(得分:0)

请注意,AND运算符在DataTable exoression syntax中具有优先权。

为简单起见,让我们说以下

TextBox1.Text = "A"
TextBox2.Text = "B"
TextBox3.Text = "C"

所以SearchString将包含以下字符串:

Col1 LIKE '%A%' OR Col2 LIKE '%B%' OR Col3 LIKE '%C%' AND Col3 = 1 AND Col3 = 'TestingString'

由于AND具有优先权,因此上述内容等同于以下内容:

Col1 LIKE '%A%' OR Col2 LIKE '%B%' OR (Col3 LIKE '%C%' AND Col3 = 1 AND Col3 = 'TestingString')

这意味着为了匹配第三个ORCol3必须:

  • 包含C字符和
  • 等于1,
  • 等于TestingString

无法匹配最后两个条件,前两个条件只有在文本框包含文本"1"时才可用。

我建议您使用括号指定哪个过滤器优先。