我想根据以下方法在我的datagridview上使用过滤器:
dt = ExecuteSelect(QueryCondition, IDWindow).Tables(0)
_textFilters = ""
Dim first As Boolean = True
For Each f As field In fields
If f.Value.Length > 0 Then
If Not first Then
_textFilters += " and "
End If
_textFilters &= f.Field & " like '%" & f.Value & "%'"
first = False
End If
Next
dt.DefaultView.RowFilter = _textFilters
我在行
中收到错误 dt.DefaultView.RowFilter = _textFilters
无法表演'喜欢' System.Decimal和System.String
上的操作因为我的数据库表中有一些十进制字段。
但如果我使用:
Dim view As DataView = New DataView(grille.DataSource)
_textFilters = ""
Dim first As Boolean = True
For Each f As field In fields
If f.Value.Length > 0 Then
If Not first Then
_textFilters += " and "
End If
Select Case f.Field.GetType.ToString
Case "String"
_textFilters &= f.Field & " like '%" & f.Value & "%'"
Case "DateTime"
Case Else
_textFilters &= f.Field & ">=" & f.Value
End Select
first = False
End If
Next
view.RowFilter = _textFilters
代码不会发送错误,但过滤器不起作用。
希望我明白
提前致谢
答案 0 :(得分:2)
Like运算符纯粹用于叮咬。如果要过滤十进制数据类型,则应使用以下运算符之一:<,>,=。
答案 1 :(得分:0)
假设f.Field是数字类型,使用ToString
方法应该有效:
_textFilters &= f.Field.ToString() & " like '%" & f.Value & "%'"