c# - 根据 GridView 中的日期为项目着色 - c# asp.net webforms

标签 c# asp.net date gridview colors

我在 GridView 中存储了多行信息,每行都包含一个日期。这个日期具有历史意义,如果该日期已经超过一年,或者在 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 循环。这是不需要的,并且导致第一个日期被忽略。

最佳答案

第二个条件永远不会成立。 没有大于-305且小于-365的数字 此外,如果第二个条件的前半部分为真,则不会达到,因为第一个条件也为真。 避免混淆,现在从解析的日期中减去并处理正数。

关于c# - 根据 GridView 中的日期为项目着色 - c# asp.net webforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387314/

相关文章:

c# - 在文本文件中的特定字符串之后读取行,然后将数据存储在列表中

c# - 我怎样才能避免出现异常?关闭我的项目时无法访问已处置的对象

c# - 将字符串列表投影到 SQL 语句列表

C# 本地数组 IReadOnlyCollection/IReadOnlyList 优化对象创建

asp.net - Azure站点: Compiler Error Message: CS1056: Unexpected character '$'

java - Drools - 检查 map 是否存在连续日期

c# - ASP.net 日历控件的任何免费替代品?

使用 WCF 的 Asp.net MVC

java - 通过 JAVA JSP 显示所选日期和日期之间的日期

vb.net - 将 DayOfWeek 枚举转换为表示日期的字符串