Hallo liebe Gemeinde,
es gibt wohl hunderte Beiträge zum Filtern einer Bindingsource, trotzdem bin ich nicht fündig geworden.
Folgende Ausgangslage:
Ein Dataset mit 3 Tabellen, die in einer m:n-Beziehung zueinander stehen.
tbl_1 steht mit tbl_3 über ID_tbl1 in einer 1:n-Beziehung
tbl_2 steht mit tbl_3 über ID_tbl1 in einer 1:n-Beziehung
Gedacht ist, dass tbl_1 die Hauptansicht darstellt (Eine Sammlung von Objekten (3D-Dateien von Werkstücken mit div. Properties), die im Datagrid gefiltert werden sollen. In meinem Beispiel mit Datensätzen "A", "B", ... "E" befüllt.
tbl_2 hält Typen (später Bearbeitungsverfahren für die Werkstücke wie Drehen, Fräsen, Zuschnitt) bereit (befüllt mit "AA", "BB"..., die über Comboboxen im Datgridview der tbl_3 den Datensätzen aus tbl_1 zugeordnet werden. Somit können später den Werkstücken jeweils eins oder mehrere Fertigungsverfahren zugeordnet werden. Ein Filter soll ermöglichen, im Datagridview nur die Datensätze aus tbl_1 anzuzeigen, denen eine bestimmte Bearbeitungen zugeordnet wurde.
Auf meiner Fom hab ich zum Testen eine Textbox, in die ich einen Filterstring eingeben kann, welcher der Bindingsource der tbl_1 übergeben wird.
Mein Ziel ist es, über diesen Filter alle Datensätze der tbl_1 anzuzeigen, die in tbl_3 auf einen bestimmten Eintrag aus tbl_2, also einen bestimmten "Typ", verweisen.
Meine Versuche haben nur ermöglicht, die Anzahl der zu einem Datensatz aus tbl_1 untergeordneten Datensätze aus tbl_3 anzuzeigen
(siehe Spalte Count_tbl3, Dort ist das als Expression hinterlegt)
Versuche wie
Leider hat mich auch die Microsoft-Hilfe nicht weitergebracht. Ich finde keine Möglichkeit, die untergeordneten Datensätze nach einer Zeichenfolge in einem Filter zu realisieren. Ich hatte (mit Erfolg) das Ganze über Linq realisiert. Allerdings muss man das natürlich jedesmal anstoßen. Filter sind da eleganter.
Ich freue mich, wenn mir jemand auf die Sprünge helfen kann und ich mich verständlich ausgedrückt habe.
es gibt wohl hunderte Beiträge zum Filtern einer Bindingsource, trotzdem bin ich nicht fündig geworden.
Folgende Ausgangslage:
Ein Dataset mit 3 Tabellen, die in einer m:n-Beziehung zueinander stehen.
tbl_1 steht mit tbl_3 über ID_tbl1 in einer 1:n-Beziehung
tbl_2 steht mit tbl_3 über ID_tbl1 in einer 1:n-Beziehung
Gedacht ist, dass tbl_1 die Hauptansicht darstellt (Eine Sammlung von Objekten (3D-Dateien von Werkstücken mit div. Properties), die im Datagrid gefiltert werden sollen. In meinem Beispiel mit Datensätzen "A", "B", ... "E" befüllt.
tbl_2 hält Typen (später Bearbeitungsverfahren für die Werkstücke wie Drehen, Fräsen, Zuschnitt) bereit (befüllt mit "AA", "BB"..., die über Comboboxen im Datgridview der tbl_3 den Datensätzen aus tbl_1 zugeordnet werden. Somit können später den Werkstücken jeweils eins oder mehrere Fertigungsverfahren zugeordnet werden. Ein Filter soll ermöglichen, im Datagridview nur die Datensätze aus tbl_1 anzuzeigen, denen eine bestimmte Bearbeitungen zugeordnet wurde.
Auf meiner Fom hab ich zum Testen eine Textbox, in die ich einen Filterstring eingeben kann, welcher der Bindingsource der tbl_1 übergeben wird.
Mein Ziel ist es, über diesen Filter alle Datensätze der tbl_1 anzuzeigen, die in tbl_3 auf einen bestimmten Eintrag aus tbl_2, also einen bestimmten "Typ", verweisen.
Meine Versuche haben nur ermöglicht, die Anzahl der zu einem Datensatz aus tbl_1 untergeordneten Datensätze aus tbl_3 anzuzeigen
(siehe Spalte Count_tbl3, Dort ist das als Expression hinterlegt)
count(child.ID_tbl_1)
Versuche wie
count(child.ID_tbl_1)>0 and (tbl_2.ID_tbl3)='AA'
schlugen mit Syntaxfehlern fehl.Leider hat mich auch die Microsoft-Hilfe nicht weitergebracht. Ich finde keine Möglichkeit, die untergeordneten Datensätze nach einer Zeichenfolge in einem Filter zu realisieren. Ich hatte (mit Erfolg) das Ganze über Linq realisiert. Allerdings muss man das natürlich jedesmal anstoßen. Filter sind da eleganter.
Ich freue mich, wenn mir jemand auf die Sprünge helfen kann und ich mich verständlich ausgedrückt habe.
Seit 26.Mai 2012 Oppa!