【问题标题】:VB.NET BindingSource filter for DatagridviewDatagridview 的 VB.NET BindingSource 过滤器
【发布时间】:2013-05-31 16:18:55
【问题描述】:

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

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

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

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

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

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

还有其他方法可以过滤电话号码并忽略连字符吗?

【问题讨论】:

    标签: vb.net datagridview filter bindingsource


    【解决方案1】:

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

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

    使用 MSSQL,您可以例如添加一个使用 REPLACE 函数的 computed column

    这里有一些链接可以帮助您创建计算列:

    希望这会有所帮助。

    【讨论】:

    • 好主意。我将此添加到我的视图中,瞧。谢谢你的推动。 codeselect id, companyname, phone, replace(phone,'-','') as phonesearch from customers
    • 很高兴我能帮上忙。我首先考虑的是数据表中的表达式列,但由于过滤器表达式的限制,这是不可能的。很高兴了解 MSSQL 替换功能 ;-)
    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2015-06-11
    • 2019-03-13
    • 2016-11-22
    • 1970-01-01
    相关资源
    最近更新 更多