Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie DataGridView richtig "färben"?
Voidcore
myCSharp.de - Member



Dabei seit:
Beiträge: 106

Themenstarter:

Wie DataGridView richtig "färben"?

beantworten | zitieren | melden

Hallo,

ich weiß das ich Zellen im Datagridview färben kann.
Anfangs habe ich das DGV Zeile für Zeile gefüllt, bis mir jemand sagte, es sei mit DataTAbles sinnvoller. Dies tu ich nun.

Wenn ich nun bestimmte Zellen färben will, muss ich dann Datagridview / DataTable durch parsen und färben oder gibt es da bessere, konfortablere Möglichkeiten?


Danke im vorraus
private Nachricht | Beiträge des Benutzers
marc_bee
myCSharp.de - Member



Dabei seit:
Beiträge: 24
Herkunft: Potsdam

beantworten | zitieren | melden

Hallo Voidcore,

versuche es mal in etwa so:


protected void gridResult_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      if (e.Row.RowIndex == 0)
      {
        e.Row.Cells[0].Style["font-weight"] = "bold";
      }
      e.Row.Cells[4].Style["font-weight"] = "bold";
      e.Row.Cells[5].Style["font-weight"] = "bold";
      
      if (e.Row.RowIndex > 3)
      {
        int countCells = e.Row.Cells.Count;
        Decimal decimalVal;


        for (int i = 5; i != countCells; i++)
        {
          // Nicht Dezimalzahlen/IntegerWerte rot färben
          if (!Decimal.TryParse(e.Row.Cells[i].Text, out decimalVal))
            e.Row.Cells[i].ForeColor = Color.Red;
        }
      }
    }
  }


fürs Rendern, das nicht vergessen:


public override void VerifyRenderingInServerForm(Control control)
  {
    return;
  }

Gruß marc_bee
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

@marc_bee: Nicht Web ;-)
private Nachricht | Beiträge des Benutzers
marc_bee
myCSharp.de - Member



Dabei seit:
Beiträge: 24
Herkunft: Potsdam

beantworten | zitieren | melden

Zitat von jaensen
@marc_bee: Nicht Web ;-)
Hast recht, habe nicht auf den Forum Titel geschaut, Asche auf mein Haupt.
Gruß
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

Hi!

Sowas geht im _CellPaint, oder, wenn Zeilenweises Colorieren gewünscht ist, im _RowPrepaint

Auf Datagridview colorieren habichwas mit Zeilenweise gemacht, und eigentlich ohne Ownerdrawing.

OwnerDrawing wäre flexibler, und - ja - würde die Werte der angebundenen DataTable auslesen.
Aber immer nur diejenigen der Zellen, die grade neu zu zeichnen sind, und dassis sehr performant, da das ja nicht so viele sind.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
progi123
myCSharp.de - Member

Avatar #avatar-3317.gif


Dabei seit:
Beiträge: 71
Herkunft: Süddeutschland

beantworten | zitieren | melden

viel Spaß beim Färben :D


this.dataGridView1.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dataGridView1_CellFormatting);

private void dataGridView1_CellFormatting(object sender, System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].Name == "Spaltenname")
            {
                    if (Convert.ToInt32(e.Value) == 1)  //zellen mit dem wert 1 werden 
                    e.CellStyle.BackColor = Color.White;  //weiß gefärbt
            }
}
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von progi123 am .
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

naja, das Formatting wird ja im Zusammenhang mit dem Cellpainting gefeuert.
Und wenn man da nun den CellStyle ändert, zieht das einen erneuten Paint-Vorgang nach sich.

Da würde ich lieber gleich das CellPainting nehmen, und die Celle eben painten.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

also hier nochmal der (auch oben) korrigierte Link zum Ansatz mit RowPrepaint: http://www.activevb.de/tipps/vbnettipps/tipp0108.html
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers