根据当前日期

时间:2018-03-12 21:09:35

标签: c# winforms datetime datagridview

我有一个带Date列的DataGridView控件。我想根据此列中的值与当前日期相比设置每行的颜色:

如果我的网格中的日期至少还有15天,请保留默认颜色。如果我的网格中的日期仅为5天,请使用ORANGE颜色。如果日期仅为1天,请使用红色。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

创建两个函数,一个来自遍历所有行,另一个用于着色行中的所有单元格。

private void ColorDates()
{
    if (dataGridView1.Rows.Count <= 0)
    {
        MessageBox.Show("Datagridview is empty!");
        return;
    }

    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
        DateTime value = Convert.ToDateTime(row.Cells["DateColumn"].Value);
        DateTime citeria = new DateTime(2018, 28, 02);

        int result = DateTime.Compare(value, citeria);

        if (result < 0) //value is earlier than citeria
            ColorRow(row, Color.Red);
        else if (result == 0) //Value is equal to citeria
            ColorRow(row, Color.Green);
        else if (result > 0) //value is later than citeria
            ColorRow(row, Color.Blue);
    }
}

private void ColorRow(DataGridViewRow row, Color color)
{
    foreach(DataGridViewCell cell in row.Cells)
    {
        cell.Style.BackColor = color;
    }
}

使用ColorDates()

将数据绑定到datagridview后调用它