我的应用程序上有一个数据网格,从数据库中获取数据。通过将其放入数据表然后使用dataGrid1.ItemsSource = DT.DefaultView显示它。
我还有一个文本框,可以用作搜索框。我希望搜索框搜索数据网格并显示正确的数据。不仅显示高亮,而且实际上根据用户输入搜索框使数据消失或重新出现。
我搜索了多个论坛,但没有找到我在我的应用程序中使用的解决方案。所以,如果有人能给我一个解决方案,我将非常感激。
编辑,排序问题
Private Sub txtSearchBox_TextChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.TextChangedEventArgs) Handles txtSearchBox.TextChanged
If txtSearchBox.Text = "" Then
dataGrid1.ItemsSource = DT.DefaultView 'puts the data in to the datagrid
DT.DefaultView.RowFilter = Nothing
Else
chosenFilter = txtSearchBox.Text
'sets the datagrid filter
DT.DefaultView.RowFilter = "TYPEID LIKE '%" & chosenFilter & "%'"
End If
End Sub
答案 0 :(得分:2)
有许多选项可以解决您的问题。
1)在CollectionView上使用过滤器
在/ ViewModel后面的代码中创建ListCollectionView。将数据项放入collectionsView并将DataGrid Itemssoure绑定到它。然后将Filter Delegate传递给CollectionView,它根据TextInput过滤项目。将处理程序附加到Textbox TextChanged事件,以便在文本更改时刷新/过滤CollectionView。这也在这里解释:How do I filter items from a collection?
2)使用Jeff Wilcox AutocompleteBox并实现自定义SelectionAdapter
这有点棘手,但非常优雅。 您需要Jeff Wilcox AutoCompleteBox,它包含在WPF工具包 - 2010年2月发行版中。您可以从此处下载:WPF Toolkit Feb 2010。这个非常有用的控件的功能在这里解释:Using Using the AutoCompleteBox in the WPF Toolkit和AutoCompleteBox control: The missing guide。 此处说明了如何实现自定义选择适配器:Page Up/ Page Down adapter
答案 1 :(得分:0)
将搜索框中的更改应用于网格的ItemsSource。这就是你需要的一切。