我试图合并一些过滤器。
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
答案 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')
这意味着为了匹配第三个OR
,Col3
必须:
C
字符和TestingString
无法匹配最后两个条件,前两个条件只有在文本框包含文本"1"
时才可用。
我建议您使用括号指定哪个过滤器优先。