我在网格视图中存储了多行信息,每行都包含一个日期。这个日期是历史性的,如果它超过一岁,如果它在 10 个月到一岁之间,我想对日期进行颜色编码。
这是我目前拥有的代码:
foreach(GridViewRow row in gridview.Rows){
if (e.Row.RowType == DataControlRowType.DataRow)
{
DateTime datepaid = Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "date_stored"));
DateTime date_now = DateTime.Now;
TextBox1.Text = (date_sub_paid - DateTime.Now).ToString();
if ((datepaid - DateTime.Now).Days >= -365)
{
e.Row.Cells[4].ForeColor = System.Drawing.Color.Red;
e.Row.Cells[4].Font.Bold = true;
}
else if ((datepaid - date_now).Days >= -305 && (datepaid - date_now).Days < -365)
{
e.Row.ForeColor = System.Drawing.Color.Yellow;
}
else
{
e.Row.ForeColor = System.Drawing.Color.Black;
}
}
}
我的逻辑存在缺陷,因为输出不符合预期。有人可以帮忙吗?提前致谢。
编辑:::
我已经编辑了代码,现在看起来它可以正常工作了:
foreach(GridViewRow row in subtracker_gridview.Rows){
if (e.Row.RowType == DataControlRowType.DataRow)
{
DateTime datepaid= Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "DATE"));
DateTime date_now = DateTime.Now;
TextBox1.Text = (date_now - datepaid).Days.ToString();
if ((date_now - datepaid).Days >= 365)
{
e.Row.Cells[4].ForeColor = System.Drawing.Color.Red;
e.Row.Cells[4].Font.Bold = true;
}
else if ((date_now - datepaid).Days >= 335 && (date_now - datepaid).Days < 365)
{
e.Row.Cells[4].ForeColor = System.Drawing.Color.Gold;
e.Row.Cells[4].Font.Bold = true;
}
else
{
e.Row.Cells[4].ForeColor = System.Drawing.Color.Green;
e.Row.Cells[4].Font.Bold = true;
}
}
但是,第一行似乎被忽略并且没有着色?任何想法为什么会发生这种情况?谢谢你的帮助。
编辑#2:我删除了 foreach 循环。这不是必需的,并导致第一个日期被忽略。