2013-05-15 81 views
0

我想過濾在datagrid中加載的數據。此數據網格綁定到EF的實體。我在互聯網上閱讀有關過濾的不同帖子,並從所有這些帖子中創建下面的代碼。問題是我仍然無法得到我想要的東西。拋出異常是因爲「MyData」爲NULL。爲什麼不defaultview返回數據?沒有datagrid的默認視圖

這是XAML

<Grid Name="gG" DataContext="{StaticResource t_KlantenViewSource}"> 
    <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Name="t_KlantenDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" IsReadOnly="True" CanUserReorderColumns="False" CanUserDeleteRows="False" CanUserAddRows="False" CanUserResizeRows="False" MouseDoubleClick="t_KlantenDataGrid_MouseDoubleClick" Margin="0,21,0,10" FontSize="13"> 

    </DataGrid> 
    <TextBox Height="23" HorizontalAlignment="Right" Name="tbSearch" VerticalAlignment="Top" Width="120" Margin="0,-7,99.2,0" TextChanged="tbSearch_TextChanged" /> 
</Grid> 

這是代碼

CollectionViewSource t_KlantenViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("t_KlantenViewSource"))); 
     System.Data.Objects.ObjectQuery<AOV.t_Klanten> customersQuery = this.Getlt_KlantenQuery(aovent); 
     t_KlantenViewSource.Source = customersQuery.Execute(System.Data.Objects.MergeOption.AppendOnly); 

private System.ComponentModel.ICollectionView MyData; 
string SearchText = string.Empty; 

    private void tbSearch_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     MyData = CollectionViewSource.GetDefaultView(t_KlantenDataGrid.DataContext); 
     TextBox t = sender as TextBox; 
     SearchText = t.Text.ToString(); 
     MyData.Filter = FilterData; 
    } 
+0

請儘快回覆 –

+0

那麼發生了什麼,你對目前的狀態不滿意?難怪,沒有人想幫忙。我們根本不能。 – DHN

+0

我收到以下異常:「對象引用未設置爲對象的實例」。在MyData.Filter = FilterData;我檢查並看到MyData是NULL。難怪拋出異常。我不明白爲什麼MyData是NULL。 –

回答

0

您需要在下面更新代碼中提到改變第一線。由於GetDefaultView接受綁定源。

private void tbSearch_TextChanged(object sender, TextChangedEventArgs e) 
     { 
      MyData = CollectionViewSource.GetDefaultView(t_KlantenDataGrid.ItemsSource); 
      TextBox t = sender as TextBox; 
      SearchText = t.Text.ToString(); 
      MyData.Filter = FilterData; 
     }