For some reason when I apply my dgvBarcodes.Datasource.Defaultview.Rowfilter = strDGVBarcodesFilter it's looking for (column "Test"), instead of filtering the rows on column "LongDescription=Test". This is unexpected behaviour. How do I get the .DefaultView.RowFilter to filter all rows based on "LongDescription=Test"?
the strDGVBarcodesFilter in this example = "LongDescription=Test", when moused over, and the error I'm getting is "System.Data.EvaluateException: 'Cannot find column [test].'"
Event handler:
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
Filter string builder function;
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