由于某种原因,当我应用我的 dgvBarcodes.Datasource.Defaultview.Rowfilter = strDGVBarcodesFilter 时,它正在寻找(列“Test”),而不是过滤列“LongDescription=Test”上的行。这是意想不到的行为。如何让 .DefaultView.RowFilter 根据“LongDescription=Test”过滤所有行?
此示例中的 strDGVBarcodesFilter =“LongDescription=Test”,当鼠标悬停时,我得到的错误是“System.Data.EvaluateException:'找不到列 [test]。'”
事件处理程序:
If txtLongDescription2.Text IsNot Nothing Then Dim strLongDescription As String = txtLongDescription2.Text Dim strLongDescriptionFilter As String = "" If strLongDescription = "" Then strLongDescriptionFilter = "" Else strLongDescriptionFilter = "LongDescription=" & strLongDescription End If Dim strDGVBarcodesFilter As String = fnBuildFilterString(strMainBrandFilter, strSubBrandFilter, strLongDescriptionFilter) dgvBarcodes.DataSource.DefaultView.Rowfilter = strDGVBarcodesFilter End If
过滤字符串生成器功能;
Private Function fnBuildFilterString(strFilterComponent1 As String, strFilterComponent2 As String, Optional strFilterComponent3 As String = "", Optional strFilterComponent4 As String = "", Optional strFilterComponent5 As String = "") As String
'Essentially it builds this; strMainFilter = strFilterComponent1 & " AND " & strFilterComponent2 & " AND " & strFilterComponent3 & " AND " & strFilterComponent4 & " AND " & strFilterComponent5
Dim strMainFilter As String = "" 'Reset the masterfilter string to be empty
If strFilterComponent1 <> "" Then 'If the filter component isn't empty
If strMainFilter = "" Then 'And if the masterfilter is empty
strMainFilter = strFilterComponent1 'Adds the filter component to the masterfilter string
Else 'The masterfilter isn't empty
strMainFilter &= " AND " & strFilterComponent1 'then it adds " AND " &field to the masterfilter string
End If
Else 'Filter component is empty, do nothing
End If 'check next component
If strFilterComponent2 <> "" Then 'If the filter component isn't empty
If strMainFilter <> "" Then 'And if the masterfilter isn't empty
strMainFilter &= " AND " & strFilterComponent2 'then it adds " AND " &field to the masterfilter string
Else 'The masterfilter is empty
strMainFilter = strFilterComponent2 'Adds the filter component to the masterfilter string
End If
Else 'Filter component is empty, do nothing
End If 'check next component
If strFilterComponent3 <> "" Then 'If the filter component isn't empty
If strMainFilter <> "" Then 'And if the masterfilter isn't empty
strMainFilter &= " AND " & strFilterComponent3 'then it adds " AND " &field to the masterfilter string
Else 'The masterfilter is empty
strMainFilter = strFilterComponent3 'Adds the filter component to the masterfilter string
End If
Else 'Filter component is empty, do nothing
End If 'check next component
If strFilterComponent4 <> "" Then 'If the filter component isn't empty
If strMainFilter <> "" Then 'And if the masterfilter isn't empty
strMainFilter &= " AND " & strFilterComponent4 'then it adds " AND " &field to the masterfilter string
Else 'The masterfilter is empty
strMainFilter = strFilterComponent4 'Adds the filter component to the masterfilter string
End If
Else 'Filter component is empty, do nothing
End If 'check next component
If strFilterComponent5 <> "" Then 'If the filter component isn't empty
If strMainFilter <> "" Then 'And if the masterfilter isn't empty
strMainFilter &= " AND " & strFilterComponent5 'then it adds " AND " &field to the masterfilter string
Else 'The masterfilter is empty
strMainFilter = strFilterComponent5 'Adds the filter component to the masterfilter string
End If
Else 'Filter component is empty, do nothing
End If 'check next component
Return strMainFilter
End Function