Problem mit Einfärben Datagridview und Sortierung

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Problem mit Einfärben Datagridview und Sortierung

    Hallo,
    ich bräuchte eure Hilfe.. Ich habe Daten in einer Bindinglist an die ein Datagridview gebunden sind. Die Daten können über das DGV sortiert werden.
    Die Idee ist, dass die Daten nach einer Spalte sortiert werden können und farblich markiert werden. Nach dem umsortieren sollen die farbigen Markierungen erhalten bleiben.

    VB.NET-Quellcode

    1. For Each dgvr As DataGridViewRow In dgvLogEntries.SelectedRows
    2. dgvr.DefaultCellStyle.BackColor = Color.Red
    3. Next


    Leider verliert das DGV nach dem umsortieren immer die Hintergrundfarbe. Gibt es eine Möglichkeit das zu verhindern?
    Bin für Ideen dankbar!
    Viele Grüße
    Haegar88

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Haegar88“ ()

    In welcher Sub führst Du diesen Code aus? Dieser gehört in die Sub/den EventHandler des Ereignisses dgvLogEntries.CellPainting. Allerdings in abgewandelter Form. Der Code sollte dabei nur die eine zu malende Zelle bemalen, nicht die komplette Tabelle.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Dann sollte sich Dein Programm wohl merken, welche Zeilen durch den Mausklick eingefärbt wurden, damit klar ist, welche bei Neuzeichnung erneut eingefärbt werden müssen. Abhängig davon, wie Dein Datenmodell (Stichwort DataBinding) ausgelegt ist, könntest Du dies dort abspeichern und bei Neuzeichnung wieder abrufen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Dort, wo Du derzeit die Farbe änderst, musst Du auch das gewählte Datenelement ändern. Wenn Du ne BindingSource hast, wäre es das BindingSource.Current, was Du per Doppelcast in Deinen Zieltyp wandelst Du da den Dateneintrag machst. Andersrum musst Du aber auch mit Code arbeiten. Ich glaube nicht, dass DataBinding an die Zellhintergrundfarbe geht. Nur für die ganze Zeile. Aber wenn die ganze Zeile gefärbt werden sol, sollte es klappen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hast Du denn ne BindingSource, an das das DGV gebunden ist?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ne BindingSource ist ne BindingSource, nix anderes.
    Ne BindingSource (BS) ist ne Komponente, an die z.B. ein DGV im Designer gebunden werden kann. Wird der BindingSource als DataSource ein Typ mitgegeben (also DeineBindingSource.DataSource = GetType(DeinDatentyp)), werden während der Designzeit im Designer im DGV alle Properties jener DeinDatentyp-Klasse anzeiegt. Auch hat die BS die Property Current. Klickt man im gebundenen DGV eine Zeile an, ändert sich diese Current-Eigenschaft und man kann daraus ermitteln, welches Item der DataSource gerade selektiert ist. Leider kommt dabei ein Object raus, daher muss es in den korrekten Zieltyp gecastet werden. Arbeitet man mit einem tDS (typisiertes DataSet), verwendet man den berühmt-berüchtigten Doppelcast. Verwendet man keines, reicht ein einfacher. Verwendet man meine typisierte BindingSource, kommt man ohne Cast ran.
    Die grundlegenden tDS-Videos von EdR kennst Du? Falls nicht: Schau mal bei EdRs VVV rein. Da gibt's genügend Infos zum schnellen Einstieg.
    Bilder
    • BindingSource.png

      6,27 kB, 325×228, 62 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.