如何过滤我的某个数据网格中的数据,例如:
我有一个mysql类:
Private Function fillGrids()
gornjiGrid.ItemsSource = mysql.getArtikli().DefaultView
gornjiGrid.Items.Refresh()
End Function
这是来自mainwindow.vb的函数
Private Sub textBox1_Copy1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles textBox1_Copy1.TextChanged
'mysql.getArtikli().DefaultView.RowFilter = " name like '*" & textBox1_Copy1.Text & "*'"
End Sub
我想在以下文本框中使用textchanged事件过滤名为“gornjiGrid”的网格中的返回行:
<DataGrid ItemsSource="{Binding gornjiGrid}" x:Name="gornjiGrid" Margin="376,141,15,0" FontSize="12" Height="126" VerticalAlignment="Top"/>
最后这是我的datagrid xml:
{{1}}
答案 0 :(得分:1)
我强烈建议您将MVVM模式用于WPF应用程序。
将ListCollectionView
用于DataGrid.ItemsSource
,将ObservableCollection(Of ...)
用于ListCollectionView的项目。然后使用ListCollectionView.Filter
谓词过滤DataGrid中的项目。您将对您当前的oldschool Windows Forms方法感到非常失望和愤怒。
答案 1 :(得分:0)
您应该过滤内存中的DataView
。还要确保正确拼写列名称。似乎没有从您的查询返回“名称”列,但有一个“命名”列。
试试这个:
Private Sub textBox1_Copy1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles textBox1_Copy1.TextChanged
Dim dataView = CType(gornjiGrid.ItemsSource, System.Data.DataView)
If String.IsNullOrEmpty(textBox1_Copy1.Text) Then
dataView.RowFilter = Nothing
Else
dataView.RowFilter = " named like '*" & textBox1_Copy1.Text & "*'"
End If
End Sub