2016-11-02 3 views
0

ich mit einer Bedingung wollen:Wie kann ich färben Reihen in Datagridview mit Bedingung C#

  • alle Zeilen bool_badge =0 haben: Farbe mit RED
  • alle Zeilen haben bool_badge=1: Farbe mit Forestgreen

Ich habe einen Code Korrekt aber nur, wenn ich für eine Zelle spezifische

klicken

Mein Code:

foreach (DataGridViewRow dr in dataGridView1.Rows) 
     {    
      int row = this.dataGridView1.CurrentCell.RowIndex; 
      string valeur = dataGridView1[2, row].Value.ToString(); 

      if (valeur == "0") 
      { 
       dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red; 
      } 
      else 
      { 
       dataGridView1.DefaultCellStyle.SelectionBackColor = Color.ForestGreen; 
      } 
     } 

Das Ergebnis: 1) enter image description here `

2) enter image description here

Aber ich will, wenn ich meine Anwendung ausführen, ist der Test beginnen, wenn bool_badge 0 oder 1, und Ich habe für alle Gridview: Farbe ROT oder ForestGreen,

Ich versuche diesen Code:

for (int i = 0; i < dataGridView1.Rows.Count; i++) 
     {     
      string valeur = dataGridView1[2, i].Value.ToString(); 

      if (valeur == "0") 
      { 
       dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red; 
      } 
      else 
      { 
       dataGridView1.DefaultCellStyle.SelectionBackColor = Color.ForestGreen; 
      } 
     } 

Aber ich habe FEHLER!

dies:

enter image description here

Wie kann ich es beheben?

Sehr Dank,

Antwort

0

Sie können Cell_Formatting Ereignis des Datagridview verwenden.

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
     { 
      if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "bool_badge" && dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null) 
     // if the column is bool_badge and check null value for the extra row at dgv 
      { 
        if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "0") 
        { 
         dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red; 
        } 
        if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1") 
        { 
         dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.ForestGreen; 
        } 
      } 
     } 

Ergebnis wird,

enter image description here

Hoffnung hilft,

+0

Dank eine Instanz eines Objekts nicht gesetzt ist, Ich versuche es, aber habe kein Ergebnis! irgendeine Farbe!nur DataGridView mit Daten Vermissen Sie etwas anderes? – devtunis

+0

@devtunis Kopieren Sie nicht direkt. Legen Sie die Zellformatierung im Design fest. Datagridview-> drücken Sie f4 -> drücken Sie die Lightining-Taste -> finden Sie die Zelle Fotmating Evet und Doppelklick. Wenn du das schon machst. Hast du debuggen? – Berkay

+0

Ich habe mit Cellformatting Doppelklick, und ich mache den Code in private void dataGridView1_CellFormatting (object sender, DataGridViewCellFormattingEventArgs e) Aber nichts! keine Farbe! nur die Anzeige DataGridView mit Daten – devtunis

0

Sie sollten .Rows und .Cells Eigenschaften verwenden.

string valeur = dataGridView1.Rows[i].Cells[2].Value.ToString(); 
+0

Danke, aber wenn ich meine Anwendung ausführen, keine Farbe erscheinen! nur Anzeige von Datagridview mit Daten, und wenn ich auf bestimmte Zelle klicken, ich habe denselben Fehler: Die Nullreferenceexception wurde nicht behandelt Objektverweis – devtunis

0

für das Helfen Sie das Debuggen nicht tun Value.ToString(); nur

var value = dataGridView_XXX.Rows[rowNumber].Cells[i].value; 

Und

if (value == null) display your row/column index 
else dataGridView_XXX.Rows[rowNumber].DefaultCellStyle.BackColor = xxx; 
Verwandte Themen