Я использую dll BindingListView, расположенную по адресу http://blw.sourceforge.net/, чтобы включить сортировку DataGridView с помощью общего списка, так как это DataSource. Я читал о фильтрации и довольно прост в использовании, но у меня возникают проблемы с попыткой выяснить, как использовать несколько параметров поиска для фильтра. Вот пример ...Фильтрация нескольких столбцов с BindingListView
Private Sub txtProjectNumber_TextChanged(sender As Object, e As System.EventArgs) Handles txtProjectNumber.TextChanged, txtDescription.TextChanged,
txtOracleNumber.TextChanged, txtBudgetYearFrom.TextChanged, txtBudgetYearTo.TextChanged, txtWeek3Start.TextChanged, txtWeek3End.TextChanged
view.ApplyFilter(AddressOf FilterData)
End Sub
Private Function FilterData(ByVal projectDetails As ProjectDetails) As Boolean
Try
If Not String.IsNullOrWhiteSpace(txtProjectNumber.Text) Then
Return projectDetails.ProjectNum.ToLower().StartsWith(txtProjectNumber.Text.ToLower())
End If
If Not String.IsNullOrWhiteSpace(txtDescription.Text) Then
Return projectDetails.Description.ToLower().StartsWith(txtDescription.Text.ToLower())
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Return False
End Function
Так здесь вы можете увидеть, что если изменить текст в txtProjectNumber TextBox мой фильтр будет возвращать правильные результаты. Но если я скажу «положить» в текстовом поле txtProjectNumber TextBox и захочу также выполнить поиск по txtDescription «morning», txtDescription игнорируется, потому что он попадает в txtProjectNumber и возвращается, не попадая в текстовый текст txtDescription TextBox. Как я могу заставить его продолжать весь путь вниз, создавая фильтр с каждого непустого ввода?