我正在使用位于http://blw.sourceforge.net/的 BindingListView dll来启用具有通用列表的 DataGridView 的排序,因为它是 DataSource。我阅读了有关过滤的内容,它使用起来相当简单,但我在试图弄清楚如何为过滤器使用多个搜索参数时遇到了问题。这是一个例子......
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 文本框中的文本,我的过滤器将返回正确的结果。但是,如果我说在 txtProjectNumber 文本框中放置“x”,并且还想通过“早上”的 txtDescription 进行搜索,则 txtDescription 将被忽略,因为它命中了 txtProjectNumber 并被返回,而从未命中 txtDescription 文本框。我怎样才能让它一直继续下去,从每个非空输入构建一个过滤器?