I want to change the color of the grdiview cell based on condition and the condition is that if Passport is about to expire with in one month or if it already expired so i want to check both condition if it is going to expire or if it already expired then i want to change the color into red. thanks
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;
}
}
}
Here's a simplified piece of code that worked for me and you could easily adapt for your case:
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;
}
}
}
This is the result i get:
Note I'm using a hard coded refDate
of 07/15/1996, so it makes sense with data in my local database.
EDIT: I made it an interval, just so is a little more interesting:
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;
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With