Datagridview数值过滤器-.net

Datagridview数值过滤器-.net,.net,vb.net,forms,visual-studio-2008,datagridview,.net,Vb.net,Forms,Visual Studio 2008,Datagridview,我正试图根据一个名为“Op No#”的列过滤数据网格。当有人向文本框中输入一个值时,我构建了一个包含过滤器的字符串,然后将其应用到datagrid(我省略了该部分,因为它与其他文本字段一起工作,我尝试了它) 我遇到的问题是,当我在文本框中输入一个数字并应用过滤器时,它不会返回任何结果,我看不出任何原因。任何帮助都将不胜感激 If MainView.TextBox2.Text <> "" Then If MainView.FilterCount = 0 Then

我正试图根据一个名为“Op No#”的列过滤数据网格。当有人向文本框中输入一个值时,我构建了一个包含过滤器的字符串,然后将其应用到datagrid(我省略了该部分,因为它与其他文本字段一起工作,我尝试了它)

我遇到的问题是,当我在文本框中输入一个数字并应用过滤器时,它不会返回任何结果,我看不出任何原因。任何帮助都将不胜感激

    If MainView.TextBox2.Text <> "" Then
        If MainView.FilterCount = 0 Then
            MainView.FilterStr = "'*[Op No#]*' like '%" & MainView.TextBox2.Text & "%'" : MainView.FilterCount = MainView.FilterCount + 1
        Else
            MainView.FilterStr = MainView.FilterStr & "and" & "'*[Op No#]*' like '%" & Convert.ToInt32(MainView.TextBox2.Text) & "%'" : MainView.FilterCount = MainView.FilterCount + 1
        End If
    End If
如果MainView.TextBox2.Text为“”,则
如果MainView.FilterCount=0,则
MainView.FilterStr=“”*[Op No#]*”如“%”和MainView.TextBox2.Text&“%”:MainView.FilterCount=MainView.FilterCount+1
其他的
MainView.FilterStr=MainView.FilterStr&“和“&”*[Op No#]*”类似“%”和Convert.ToInt32(MainView.TextBox2.Text)和“%”:MainView.FilterCount=MainView.FilterCount+1
如果结束
如果结束

从我看到的情况来看,您的主筛选器字符串错误。。。改变这个

"'*[Op No#]*' like '%" & MainView.TextBox2.Text & "%'" 
到这个…只为数字

 "Column name = " & MainView.TextBox2.Text
另一个例子

 DataView.RowFilter = "Year = 2008"
你的过滤器语法是错误的,你正在对一个整数做一个like…你用记号和百分比符号包装它…不要这样做

在你的专栏后面还有一个英镑符号,这很好,只要确保它像你一样用括号括起来,我没有显示这个

字符串值包含在单引号“”中。如果字符串包含单引号',则引号必须加倍。数值不包含在任何字符内。这些值应与int.ToString()或float.ToString()方法(用于不变量或英语区域性)的结果相同

这里有更多信息。。。


希望这有帮助…

Mainview是datagridview吗?如果是这样,语句“Mainview.Textbox2”就没有任何意义,因为这意味着您引用的是一个名为Mainview的表单。很抱歉,Mainview是一个用户表单,它同时包含datagridview和textbox。上面的代码是从一个单独的模块中提取的,因此有必要调用mainview。什么时候告诉datagridview执行filter str并过滤列?是的,我将filterstr作为字符串存储在mainview中,然后在稍后的模块中,我将filterstr应用于mainview中的datagridview。当我用文本过滤不同的列时,这是有效的,但当我应用带有数字的过滤器时,这是无效的。好的,你需要包括所有与你的问题相关的代码。请输入。但是,如果它对文本有效,但对数字无效,那么您正在创建的过滤器字符串就有问题了。当您执行将其应用于datagridview的行时,运行时的值是多少?当你仅仅使用文本时,它的价值是什么?谢谢,是的,我的语法是错误的。它现在显示为
MainView.FilterStr=“[Op No#]=”&MainView.TextBox2.Text
,但是否可以在筛选器中使用通配符,因为它仅在找到精确匹配时显示结果?根据我的理解,您需要事先确定这一点。