2013-08-19 21 views
9

Mam datagridview, a teraz chciałbym zmienić kolor tła każdego wiersza w zależności od tego, czy numer wiersza jest parzysty, czy nieparzysty.Nieparzysty/parzysty kolor tła wierszy datagridview

Pomyślałem, że musi być łatwiejszy sposób, aby to osiągnąć. Następnie użyj na przykład tej części kodu i zmodyfikuj ją, aby zmienić kolory linii dtg. Jeśli ten fragment kodu jest jednym ze sposobów, aby to zrobić, to czy ktoś może mi pomóc go ulepszyć, aby nie wyrzucał wyjątku, gdy indeks jest wyłączony, jeśli rabunek?

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; 
    } 

Dziękuję za poświęcony czas i odpowiedzi.

+0

Ten kod nie będzie działać, jeśli dodawanie/usuwanie wierszy, chyba że mamy do ponownego wywołania metody. –

+0

@KingKing moja aplikacja nie jest tak duża, więc ponowne wywoływanie jej jak 3 razy nie jest dla mnie takie trudne. Dzięki za komentarz. – Marek

Odpowiedz

3

Wiersze GridView są oparte na zerach index i powinieneś iterować jeden mniej niż wiersze count.

Zmień

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

Aby

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

Można użyć AlternatingRowsDefaultCellStyle właściwość ustawić alternatywny rząd stye.

+0

Cześć, dziękuję, zapomniałem o tym. Czy istnieje łatwiejszy sposób na zmianę bgcolor wierszy nieparzystych/parzystych? – Marek

+1

Możesz użyć alternatingrowsdefaultcellstyle, http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.alternatingrowsdefaultcellstyle.aspx – Adil

19

W projektant formularzy występuje styl alternatywnego stylu widoku wiersza DataGridView. AlternatingRowsDefaultCellStyle w siatce właściwości

+0

To jest świetne +1, nigdy na niego nie patrzyłem. –

+0

mój gridview przyjmuje domyślnie styl alternatywny i nie chcę tego stylu wyłączania opcji AlternatingRowsDefaultCellStyle –

2

Można użyć AlternatingRowsDefaultCellStyle

LUB

można również zrobić to ręcznie

foreach (DataGridViewRow row in dataGridView1.Rows) 

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

można spróbować ten kod

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" 

możemy bezpośrednio dodać kod w siatce ASP

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