我想根据条件更改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;
}
}
}
答案 0 :(得分:7)
这是一段简化的代码,对我有用,你可以很容易地适应你的情况:
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;
}
}
}
这是我得到的结果:
注意我使用的是07/15/1996的硬编码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;
}
}
}