Datagridview mit bound und unbound Spalten über Bindingsource filtern

  • VB.NET
  • .NET 4.5

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Cerv4.

    Datagridview mit bound und unbound Spalten über Bindingsource filtern

    Hallo,

    Ich habe bei einem meiner Projekte ein Datagridview, das von einer mssql datenbank mit inhalt versorgt wird. Bisher habe ich die Inhalte über den bindingsource filter gefiltert. Um den Status der Einträge visuell besser darzustellen habe ich dann 2 zusätzliche ungebundene spalten hinzugefügt, eine sichtbare, die einfach farblich hinterlegt ist und eine unsichtbare, die den Status in textform enthält ("pausiert", "erledigt", usw), damit ich nach diesem Status filtern kann. Diese Stati setze ich über das Cellformatting Event, also sobald die tabelle befüllt wird.

    Leider greift der Bindingsource Filter für die ungebundene Spalte nicht, ich nehme an weil er nicht die Daten im Sichtbaren Grid "sieht" sondern die, die beim Einlesen hinterlegt werden.

    Kann ich die Werte der Status Spalte irgdendwie dem Dataset hinzufügen, damit sie filterbar sind?

    besten Gruss,

    Cerv4
    Danke für die Antwort. Die Spalten habe ich in die Datasource eingefügt, kennen tut die Bindingsource diese also, nur eben nicht deren Inhalt. Meine Frage also: Wie kann ich der Bindingsource die Inhalte bekanntmachen?

    Momentan mache ich beim Cellformattingevent in etwa folgendes (nur als Beispiel, das ganze ist viel komplexer aber hierfür nicht relevant):

    Wenn Inhalt von Zelle A(gebunden) dem aktuellen Benutzernamen entspricht, schreibe den String "meines" in Zelle X (ungebunden)

    Cerv4 schrieb:

    kennen tut die Bindingsource diese also, nur eben nicht deren Inhalt.
    Ehh. Wie kommst Du darauf? Ich kann mir das gerade nicht sonderlich gut vorstellen. Oder anders ausgedrückt: Natürlich kennt die BS den Inhalt, wenn sie schon die Spalten hat.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ich habe die Spalten zuerst im Datagridview hinzugefügt. Dann habe ich versucht den bindingsourcefilter anzupassen um danach zu filtern. Daraufhin habe ich die Fehlermeldung bekommen, dass die Bindingsource die entsprechenden Spalten nicht kennt.
    Also habe ich die Spalten im Dataset angelegt, woraufhin keine Fehlermeldung mehr gekommen ist, dass die Spalten unbekannt sind, beim Versuch die Spalten zu filtern bekomme ich aber immer kein Ergebnis, weshalb ich davon ausgehe, dass für die Bindingsource die Spalten da sind, aber leer.
    Nun, es besteht doch nun aus BS-Sicht kein Unterschied zwischen den einzelnen Spalten mehr. Daher ist das Zugriffsprinzip und das Wissen über den Inhalt gleich. Wahrscheinlicher ist, dass der Filter falsch eingestellt ist. Zeige mal bitte nen tDS-Designer-Screenshot der betroffenen DataTable und den Filterstring für die BS, mit dem Du versuchst Daten zu erhalten. Bitte auch den Datentyp der Zielspalten angeben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.