如何使用C#基于条件更改gridview单元格颜色

我想根据条件更改grdiview单元格的颜色,条件是如果Passport即将在一个月内到期或者它已经过期,那么我想检查这两个条件是否会过期或者是否已经过期过期然后我想把颜色变成红色。 谢谢

protected void OnRowDataBound_gvPass(object sender, GridViewRowEventArgs e) { DateTime todaysDate = DateTime.Now.Date; if (e.Row.RowType == DataControlRowType.DataRow) { Label lblPassportExpDate = (Label)e.Row.FindControl("PassportExpDate"); DateTime PassportExpDateDate = DateTime.Parse(lblPassportExpDate.Text); if (PassportExpDateDate < DateTime.Today || PassportExpDateDate < todaysDate.AddDays(30)) { //e.Row.BackColor = System.Drawing.Color.Red; gvDriverStatus.Columns[3].ItemStyle.ForeColor = System.Drawing.Color.Red; } } } 

这是一段简化的代码,对我有用,您可以轻松适应您的情况:

 protected void Page_Load(object sender, EventArgs e) { refDate = new DateTime(1996, 7, 15); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex >= 0) { if (DateTime.Parse(e.Row.Cells[3].Text) < refDate) { e.Row.Cells[3].BackColor = Color.Red; } } } 

这是我得到的结果:

在此处输入图像描述

注意我使用的是refDate的硬编码refDate ,因此我的本地数据库中的数据是有意义的。

编辑:我把它作为间隔,这样更有趣:

 protected void Page_Load(object sender, EventArgs e) { minDate = new DateTime(1996, 7, 7); maxDate = new DateTime(1996, 7, 15); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex >= 0) { var curDate = DateTime.Parse(e.Row.Cells[3].Text); if (minDate < curDate && curDate < maxDate) { e.Row.Cells[3].BackColor = Color.Red; e.Row.Cells[3].ForeColor = Color.White; } } } 

在此处输入图像描述