Entwickler-Ecke

WinForms - Datenbindung einer BindingList an 2 Controls


BlackMatrix - So 08.04.12 16:08
Titel: Datenbindung einer BindingList an 2 Controls
Hey.

Ich weiß nicht so recht wo ich ansetzen soll. Ich habe eine BindingList, die IBindingListView und IRaiseItemChangedEvents implementiert und ich möchte auf meiner WinForm eine ComboBox und ein DGV haben. Mittels ComboBox möchte ich den Inhalt des DGVs filtern. Es soll niemals möglich sein, alle Einträge in meinem DGV zu sehen. Meine ComboBox soll immer alle Auswahlmöglichkeiten halten und das DGV nur die gefilterten Werte.

Wie realisiere ich das am Besten?

Liebe Grüße


Th69 - So 08.04.12 20:49

Hallo BlackMatrix,

unter dem Stichwort BindingSource.Filter habe ich heute erst diesen Beitrag verfasst: http://www.c-sharp-forum.de/viewtopic.php?p=661318#661318

Ob nun zwei DGVs oder eine ComboBox und ein DGV sollte ja nur eine kleine Änderung bedeuten...


BlackMatrix - So 08.04.12 21:57

Ich danke dir, aber es handelt sich ja bei mir nicht um ein DataSet, sondern um eine Liste, die die Filterfunktionalität implementiert. Rufe ich nun den Filter auf, wird die zugrunde liegende Liste gefiltert und die originale Liste als privater Member gespeichert. Und das für beide Controls. Die BindingSource implementiert ja die Filterfunktionalität nicht, sie leitet sie nur an meine Liste weiter. D.h. nach dem Aufruf des Filters sind beide BindingSources mit den selben, gefilterten Elementen bestückt.
Das möchte ich aber nicht, ich möchte immer die vollständige Liste in der ComboBox haben und die Filterung im DGV.


Th69 - Mo 09.04.12 11:24

Hallo BlackMatrix,

dann mußt du natürlich bei dir auch zwei verschiedene Listen (je Control eins) erzeugen.
Da die ComboBox bei dir aber - laut deiner Beschreibung - immer die vollständige Liste anzeigen soll, benötigst du doch hier gar keine BindingList, sondern kannst einfach die originale Liste anzeigen (und nur bei dem DGV benutzt du dann die BindingList).


BlackMatrix - Di 10.04.12 18:00

Dank dir.

Verstanden hatte ich das schon, ich wusste nur irgendwie nicht wie man es OO-konform umsetzt. Das ganze Problem hat sich aber nun in Luft aufgelöst, da ich mein Konzept der Klasse noch einmal überarbeitet habe und dabei der nette Nebeneffekt entstanden ist, dass ich 2 verschiedene gebundene Elemente habe und diese in einer seperaten Klasse zusammenführe. Es vollständig zu erklären würde jetzt den Rahmen sprengen.

Vielen Dank.

Edit:

Ah doch eine Frage hätte ich dazu noch. Und zwar stellt ja meine ComboBox den Filter für das DGV dar. Wie genau sollte ich jetzt den Filter aktualisieren, wenn über die Menüs ein neues Element hinzugefügt wurde und dieses nur im DGV erscheinen soll, wenn es dem in der Combobox selektierten Element gleicht? Über irgendein Ereignis?