用于Datagridview的VB.NET BindingSource过滤器

时间:2013-05-31 16:18:56

标签: vb.net datagridview filter bindingsource

在MSSQL中,我可以像这样过滤一个电话号码的查询:

where replace(phone,'-','') Like '%480555%'

我想弄清楚如何在数据源上执行此操作。普通查询如下所示:

Dim stringFilter As String = String.Empty
String.Format("phone Like '%480555%'")
ViewCustomersBindingSource.Filter = stringFilter

但是,这不会找到任何结果,因为数据源中包含带连字符的值。 REPLACE不是过滤的有效参数。

我最初的想法是更新MSSQL视图以删除连字符。但是,为了显示,我想显示连字符。我不能假设它们看起来都一样,因为某些电话号码可能与美国不同。

是否有另一种方法来过滤电话号码并忽略连字符?

1 个答案:

答案 0 :(得分:0)

我不认为您可以直接在binding source上设置忽略连字符(如第一个查询中)的过滤器。过滤器表达式列中没有可能的字符串操作。从http://msdn.microsoft.com/fr-fr/library/system.windows.forms.bindingsource.filter.aspx开始,唯一允许的字符串操作是+

但是您可以保留并显示包含连字符的原始列,并添加另一个不显示的列(没有连字符),但只用于过滤。

使用 MSSQL ,您可以添加使用computed column功能的REPLACE

以下是一些可以帮助您创建计算列的链接:

希望这有帮助。