DataView RowFilter中的InvalidCastException

时间:2016-10-04 12:43:45

标签: vb.net

一切!我想先说我在这里新人! :) 我在编码方面也很陌生,所以要温柔地对待我

尝试将过滤器应用于我的DataTable时,我收到了InvalidCastException错误。问题是,我试图应用2个过滤器,其中一个是有条件的。 这就是我所拥有的:

If cbValue1.Text <> "" Then
    dv.RowFilter = "Value1 " + cbValue1.Text + " " + CStr(nudValue1.Value) AndAlso If(CheckBox1.Checked = True, " AND [Value2] = 'Mon'", "")
End If

我得到的错误是,&#34;从字符串&#34转换;值1&lt; = 1500&#34;输入&#39;布尔&#39;无效。&#34;

如果我只有这一部分它可以正常工作:

If cbValue1.Text <> "" Then
    dv.RowFilter = "Value1 " + cbValue1.Text + " " + CStr(nudValue1.Value)
End If

有人能告诉我什么是错的吗?

1 个答案:

答案 0 :(得分:0)

您错误地使用了AndAlso Operator。它会将此视为布尔表达式:

"Value1 " + cbValue1.Text + " " + CStr(nudValue1.Value)

尝试使用多行代码或以不同方式构建RowFilter,如下所示:

If cbValue1.Text <> "" Then

    Dim strRowFilterExpression As String = "Value1 " & cbValue1.Text & " " & CStr(nudValue1.Value)

    If CheckBox1.Checked Then

        strRowFilterExpression += " AND [Value2] = 'Mon'"

    End If

    dv.RowFilter =  strRowFilterExpression

End If