奇数/偶数数据网格视图行的背景颜色

本文关键字:视图 背景 颜色 网格 数据网 数数 数据 奇数 | 更新日期: 2023-09-27 18:28:06

我有datagridview,现在我想根据行号是偶数还是奇数来更改每行的背景色。

我想一定有更简单的方法可以达到这个目的。然后使用例如这部分代码,并对其进行修改,使其可以更改dtg行的颜色。如果这段代码是实现这一点的方法之一,有人能帮助我改进它吗?这样它就不会在索引丢失时抛出异常?

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

感谢您的时间和回答。

奇数/偶数数据网格视图行的背景颜色

表单设计器中有一个DataGridView替代行视图样式选项。属性网格中的AlternatingRowsDefaultCellStyle

您正在访问不存在的行,因此出现异常。GridView行是基于零的index,这意味着如果网格中有十行,索引将从0到9,并且应该比count行少迭代一行。i <= dataGridView1.Rows.Count将在上一次迭代中给出异常,因为当count为10(总行数为10)并且dataGridView1.rows[10]不存在时,将抛出异常。

更改<=循环中条件为<

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

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

您应该AlternatingRowsDefaultCellStyle属性来设置替代行样式,以保持其简单高效。

您可以尝试此代码

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

您可以使用AlternatingRowsDefaultCellStyle

你也可以手动

   foreach (DataGridViewRow row in dataGridView1.Rows)
            if (row.Index % 2==0 )
            {
                row.DefaultCellStyle.BackColor = Color.Red;    
            }
AlternatingRowStyle-BackColor = "#C5C5C5"

我们可以直接在ASP网格中添加代码

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