2013-08-19 13 views
9

Ho datagridview e ora vorrei cambiare il colore di sfondo di ogni riga a seconda se il numero di riga è pari o dispari.Colore di sfondo a righe di dati pari/dispari

Ho pensato che ci dev'essere un modo più semplice per raggiungerlo. Quindi, ad esempio, si utilizza questa parte di codice e la si modifica in modo da modificare i colori della riga di dtg. Se questo snippet di codice è uno dei modi per farlo, qualcuno può aiutarmi a migliorarlo in modo da non generare eccezioni quando l'indice è fuori se rabge?

public void bg_dtg() 
    { 
     try 
     { 

      for (int i = 0; i <= dataGridView1.Rows.Count ; i++) 
      { 
       if (IsOdd(i)) 
       { 

        dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.LightBlue; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(""+ex); 
     } 
    } 

    public static bool IsOdd(int value) 
    { 
     return value % 2 != 0; 
    } 

Grazie per il vostro tempo e le vostre risposte.

+0

Questo codice non funzionerebbe se l'aggiunta/rimozione di righe se non abbiamo ri-chiamare il metodo. –

+0

@KingKing La mia app non è così grande, quindi chiamarla di nuovo 3 volte non è poi così difficile per me. Grazie per il tuo commento. – Marek

risposta

3

Le righe GridView sono a base zero index e si dovrebbe iterare uno in meno delle righe count.

Change

for (int i = 0; i <= dataGridView1.Rows.Count ; i++) 

Per

for (int i = 0; i < dataGridView1.Rows.Count ; i++) 

È possibile utilizzare AlternatingRowsDefaultCellStyle proprietà per impostare porcile fila alternativo.

+0

Ciao, grazie, me ne sono dimenticato. C'è un modo più semplice per cambiare bgcolor di righe pari/dispari? – Marek

+1

Puoi usare alternatingrowsdefaultcellstyle, http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.alternatingrowsdefaultcellstyle.aspx – Adil

19

C'è un'opzione di stile di visualizzazione di riga alternativa DataGridView nella finestra di progettazione form. AlternatingRowsDefaultCellStyle nella griglia delle proprietà

+0

Questo è ottimo +1, mai guardato. –

+0

il mio gridview sta prendendo lo stile alternativo di default non voglio quello stile come disabilitare AlternatingRowsDefaultCellStyle –

2

È possibile utilizzare AlternatingRowsDefaultCellStyle

O

è anche possibile farlo manualmente

foreach (DataGridViewRow row in dataGridView1.Rows) 

      if (row.Index % 2==0) 
      { 
       row.DefaultCellStyle.BackColor = Color.Red;  
      } 
5

si può provare questo codice

for (int i = 0; i < GridView1.Rows.Count; i++) { 

    if (i % 2 == 0) { 
     GridView1.Rows[i].Cells[0].Style.BackColor = System.Drawing.Color.Green; 
     GridView1.Rows[i].Cells[1].Style.BackColor = System.Drawing.Color.Green; 
    } 
    else { 
     GridView1.Rows[i].Cells[0].Style.BackColor = System.Drawing.Color.Red; 
     GridView1.Rows[i].Cells[1].Style.BackColor = System.Drawing.Color.Red; 
    } 
} 
1
AlternatingRowStyle-BackColor = "#C5C5C5" 

possiamo aggiungere direttamente il codice nella griglia ASP

<asp:GridView ID="Gridview1" runat="server" 
           AlternatingRowStyle-BackColor = "#F3F3F3" 
           AutoGenerateColumns="true"> 
</asp:GridView> 
Problemi correlati