使用文本框对WPF数据网格进行排序

时间:2012-07-02 09:04:25

标签: wpf vb.net datagrid

我的应用程序上有一个数据网格,从数据库中获取数据。通过将其放入数据表然后使用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

2 个答案:

答案 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 ToolkitAutoCompleteBox control: The missing guide。 此处说明了如何实现自定义选择适配器:Page Up/ Page Down adapter

答案 1 :(得分:0)

将搜索框中的更改应用于网格的ItemsSource。这就是你需要的一切。