【发布时间】:2019-10-10 18:04:51
【问题描述】:
我试图过滤一个DataView,它有多个列,其中一些是数值。输入字符串时一切正常,但是一旦输入了数值(例如检查快递#),它就会过滤掉任何内容。
我的代码如下:
private void tbxSearchCourier_KeyUp(object sender, KeyEventArgs e)
{
string outputInfo = "";
string[] keyWords = tbxSearchCourier.Text.Split(' ');
foreach (string word in keyWords)
{
if (outputInfo.Length == 0)
{
outputInfo = "('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
+ "%' OR 'Email Address' LIKE '%" + word + "%')";
}
else
{
outputInfo += " AND ('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
+ "%' OR 'Email Address' LIKE '%" + word + "%')";
}
}
CourierDV.RowFilter = outputInfo;
}
我在网上搜索了解决方案,但找不到任何可行的方法。为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
您已将列名放在
''之间,这使其成为字符串文字。如果列名很复杂,请在列名周围使用[]。此外,若要将整数列与 LIKE 运算符进行比较,应先将其转换为字符串。 -
为了使过滤器更具可读性,使用 String.Format 混合过滤器字符串和输入值。
-
感谢@RezaAghaei,我忘记使用该死的
[]而不是''。
标签: c# .net winforms dataview bindingsource