使用 Like in BindingSoure.Filter 或 DataView.RowFilter 过滤整数
Filter an integer using Like in BindingSoure.Filter or DataView.RowFilter
我试图过滤一个 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;
}
我在网上搜索了解决方案,但找不到任何有效的方法。为什么会发生这种情况,我该如何解决?
考虑这些注意事项:
您已将列名称放在 ''
之间,使其成为字符串文字。
如果是复杂名称,请在列名称周围使用 []
。
要将 integer
列与 LIKE
运算符进行比较,您应该首先将其转换为 string
,因为 LIKE
是一个 string
运算符。
还要确保您的列名称是 Courier #
而不是 caption/header 文本。
例子
dataView.RowFilter = "Convert([Some Column], System.String) LIKE '12%'";
更多信息
要了解有关过滤器支持的语法的更多信息,请查看 DataColumn.Expression
。
我试图过滤一个 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;
}
我在网上搜索了解决方案,但找不到任何有效的方法。为什么会发生这种情况,我该如何解决?
考虑这些注意事项:
您已将列名称放在
''
之间,使其成为字符串文字。如果是复杂名称,请在列名称周围使用
[]
。要将
integer
列与LIKE
运算符进行比较,您应该首先将其转换为string
,因为LIKE
是一个string
运算符。还要确保您的列名称是
Courier #
而不是 caption/header 文本。
例子
dataView.RowFilter = "Convert([Some Column], System.String) LIKE '12%'";
更多信息
要了解有关过滤器支持的语法的更多信息,请查看 DataColumn.Expression
。