GridView gleiche Werte (Bestellnummer) einfärben oder hervorheben

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von thelightsense.

    GridView gleiche Werte (Bestellnummer) einfärben oder hervorheben

    Hallo, bin neu hier!

    Programm: VB 2016 community c#

    Meine Form "Auftragsübersicht" mit einem DataGridview ist folgend aufgebaut:

    Datum / Bestellnummer / Artikel / Dokument
    25.06.2017 5 PC-Maus c:\bestellung1.pdf
    25.06.2017 5 PC-Tastatur c:\bestellung1.pdf
    26.06.2017 6 Drucker c:\bestellung2.pdf

    Ich hätte gerne:
    Datum / Bestellnummer / Artikel / Dokument
    25.06.2017 5 PC-Maus c:\bestellung1.pdf
    25.06.2017 5 PC-Tastatur c:\bestellung1.pdf

    26.06.2017 6 Drucker c:\bestellung2.pdf

    Ich hätte also gerne, dass bei gleicher Bestellnummer die Zellen mit fetter Schrift angezeigt werden.
    Wie kann ich das machen ?
    Danke

    Bitte Regeln für Unterforen lesen und beherzigen. In die Tipps-und-Tutorials-Kategorie gehören keine Fragen. Verschoben. ~fufu

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

    Vb.Net oder C#?

    Was bringt es das Fett zu machen? Wohl damit man sieht, was zusammen bestellt wurde, oder?

    Was wenn du 10 Bestellungen mit je 10 Artikeln darin hast? Dann ist alles fett gedruckt und die Formatierung der Schrift hat den Sinn verloren.

    So, wo kommst du nicht weiter? Beim Formatieren der Schrift, oder beim Abgleich ob es bereits einen Artikel mit gleicher Bestellnummer gibt? Evtl. magst du mal deinen bisherigen Code zeigen, dann hilf es sich glaub einfacher.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @thelightsense Willkommen im Forum. :thumbup:
    Nutze das CellPainting-Event des DataGridViews.
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi, ja genau um zu sehen, das alle Bestellungen zusammen gehören. Es sind aber nie mehr als 100 Artikel also das ist kein Thema! c# dürfte es sein.

    Private Sub BestellungDataGridView_CellFormatting(ByVal sender As Object, ByVal _
    e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles _
    BestellungDataGridView.CellFormatting
    '(Insert line)

    If e.RowIndex = BestellungBindingSource.Count Then Return
    ' .ToString() for DBNulls
    If BestellungBindingSource.List(e.RowIndex)("Liefertermin").ToString() <
    DateTime.Today Then e.CellStyle.BackColor = Color.Red

    If BestellungBindingSource.List(e.RowIndex)("Liefertermin").ToString() >=
    DateTime.Today.AddDays(7) Then e.CellStyle.BackColor = Color.GreenYellow

    If BestellungBindingSource.List(e.RowIndex)("Kontraktnummer").Equals("Kontraktnummer") Then
    e.CellStyle.BackColor = Color.Blue
    End If

    End Sub

    Alle Aufträge in der Zukunft sind Grün, welche die in der aktuellen Woche anliegen Weiß und welche die schon hätten rausgehen sollen sind Rot. Jetzt habe ich hier
    im Beispiel noch die Farbe Blau für alle mit gleicher Kontraktnummer. Klappt aber leider nicht. Mit Farben oder Schriften kann ich ja experimentieren

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

    thelightsense schrieb:

    c# dürfte es sein.


    Dein Code ist in VB.Net...?!

    Du musst halt wissen welche Bestellnummern mehrfach vorkommen. Dazu kann man mit einer List(Of T) arbeiten.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ok, ja wenn ich einen neuen Datensatz eingebe soll ja das Programm herausfinden und markieren, dass ich gerade 3 Auträge aber einer Bestellung eingegeben habe.

    so geht es so halb, dann ist aber alles blau

    If BestellungBindingSource.List(e.RowIndex)("Kontraktnummer") = BestellungBindingSource.List(e.RowIndex)("Kontraktnummer") then e.CellStyle.BackColor = Color.Blue

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „thelightsense“ ()

    RodFromGermany schrieb:

    Nutze das CellPainting-Event des DataGridViews.
    da mal ausprobiert?

    P.S. Um das mal endgültig zu klären weil du immer behauptest du programmierts in C#: Du programmierst in VB.NET NICHT C#
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen