2016-10-05 4 views
0

Wie kann ich mein DataGrid filtern? Dieser Code funktioniert nicht:WPF DataGrid-Filter funktioniert nicht

public MainWindow() 
    { 
     InitializeComponent(); 

     SetSource(); 
    } 

    private void FilterTextBox_TextChanged(object sender, TextChangedEventArgs e) 
    { 

    } 

    void SetSource() 
    { 
     CollectionViewSource Sorted = new CollectionViewSource() { Source = MainDB.CurDB.Requests }; 
     Sorted.SortDescriptions.Add(new SortDescription("Id", ListSortDirection.Descending)); 
     Sorted.Filter += Sorted_Filter; 
     MainDataGrid.ItemsSource = Sorted.View; 
    } 

    private void Sorted_Filter(object sender, FilterEventArgs e) 
    { 
     e.Accepted = true; 
    } 

Die Ausnahme erhalte ich:

"System.Windows.Data.BindingListCollectionView" It does not support filtering

Update: Der Filter ist jetzt arbeiten, aber jetzt habe ich die folgende Fehlermeldung erhalten, dass Pausen die Spalten:

System.Windows.Data Error: 40 : BindingExpression path error: 'Changing Date' property not found on 'object' ''RequestsRow' (HashCode=56483442)'. BindingExpression:Path=Changing Date; DataItem='RequestsRow' (HashCode=56483442); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

Das Problem tritt auf, wenn einige Zellen leer bleiben

Mein DataSet. Keine anderen Klassen ich habe:

Das Problem wird durch Ersetzen von "SM Id" "SM_Id" usw.

+0

Versuchen Sie dies: 'ICollectionView Sortiert = CollectionViewSource.GetDefaultView (MainDB.CurDB.Requests); 'anstelle von' CollectionViewSource Sorted = neue CollectionViewSource() {Source = MainDB.CurDB.Requests}; ' – Pikoh

+0

ICollectionView Sorted = CollectionViewSource.GetDefaultView (MainDB.CurDB.Requests); Sorted.Filter = item => true; Auslöser (" Die Methode wird nicht unterstützt") – DenisJNewb

+0

OK, versuchen Sie 'ICollectionView Sorted = CollectionViewSource.GetDefaultView (MainDB.CurDB.Requests.AsEnumerable()); Sorted.Filter = item => true; ' – Pikoh

Antwort

0

Versuchen Sie, diese gelöst wurde:

List<DataRow> requests = MainDB.CurDB.Requests.Select().ToList(); 
CollectionViewSource Sorted = new CollectionViewSource() { Source = requests }; 
+0

"Anfragen" ist DataTable – DenisJNewb

+0

Ich habe den Beitrag bearbeitet ... – Michelle

+0

Ursachen für diesen Fehler: System.Windows.Data Fehler: 40: BindingExpression Pfadfehler: ' SM Id 'Eigenschaft nicht gefunden auf' Objekt '' 'RequestsRow' (HashCode = 45629785) '. BindingExpression: Pfad = SM ID; DataItem = 'RequestsRow' (HashCode = 45629785); Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String'). Es bricht die DataGrid-Spalten "SM-ID", "Erstellungsdatum" und "Änderungsdatum" – DenisJNewb

Verwandte Themen