使用组合框和文本框筛选DataGridView时VB.NET计算异常

使用组合框和文本框筛选DataGridView时VB.NET计算异常,vb.net,winforms,visual-studio-2010,datagridview,Vb.net,Winforms,Visual Studio 2010,Datagridview,我正在尝试使用组合框在我的DGV中搜索,以获取搜索查询的列名称和文本框。我以前使用过这段代码,它很管用,但现在我得到了一个EvaluateException语句 无法对System.Double和System.String执行“Like”操作 以下是我正在做的: Dim dv As DataView = New DataView() Dim CmSi = cmbSearch.SelectedItem dv.Table = OutGoingDataSet.outgoingdeliveries dv

我正在尝试使用组合框在我的DGV中搜索,以获取搜索查询的列名称和文本框。我以前使用过这段代码,它很管用,但现在我得到了一个
EvaluateException
语句

无法对System.Double和System.String执行“Like”操作

以下是我正在做的:

Dim dv As DataView = New DataView()
Dim CmSi = cmbSearch.SelectedItem
dv.Table = OutGoingDataSet.outgoingdeliveries
dv.RowFilter = CmSi & " Like '" & txtSearch.Text & "'"
OutgoingDataGridView.DataSource = dv

如何解决此问题?

这是您的问题。当您应用过滤器时,请执行以下检查:

Column LIKE 'String'. 
这将适用于包含字符串的所有列。双打不起作用,因为它们不是弦。基本上是这样的

if (5 == "5") 
这当然是错误的

因此,在进行类似的比较之前,必须将double转换为字符串。我不知道它是否会起作用,但我认为它会起作用

dv.RowFilter = "CONVERT(" & CmSi & ", System.String) LIKE '" & txtSearch.Text & "'"

cmbSearch中值的数据类型是什么。SelectedItem?@AhmadAl Mutawa列的名称。这些代码是<代码>事务号码<代码>和<代码>张贴您应该真正考虑转向选项严格……WoZeC对不起,我还在学习但什么是选项严格?@ AlxLuthor选项严格要求您基本上正确编写代码。例如,您有Dim CmSi,并将其用作字符串。但它实际上是一个组合框项目。您的代码将正常工作,因为strict off是一个快乐的家伙,并且使用items tostring函数,而您可以快乐地忽略它。Option strict强制您将选定项转换为字符串,否则将标记错误。因此,您将始终知道CmSi将是一个字符串。是的,我知道这是问题所在,但我尝试了转换,可能我使用了错误的转换。我会尝试使用你的样品。。。非常感谢谢谢你,效果很好。。。我确实用错了。我所做的是“转换系统字符串(查询)”。