【问题标题】:Change Gridview row value based on current date in asp.net C#在asp.net C#中根据当前日期更改Gridview行值
【发布时间】:2018-08-06 07:04:21
【问题描述】:

我无法解决这个问题。我想检查收到的日期(DateOfRecd)是否从当前日期过去,那么它应该是红色的。

但我不能。请帮我。我的代码是:

<asp:BoundField DataField="ItemTypeName" HeaderText="ItemTypeName" SortExpression="ItemTypeName" />
<asp:BoundField DataField="BrandName" HeaderText="BrandName" SortExpression="BrandName" />
<asp:BoundField DataField="ModelName" HeaderText="ModelName" SortExpression="ModelName" />
<asp:BoundField DataField="ItemSerial" HeaderText="ItemSerial" SortExpression="ItemSerial" />
<asp:BoundField DataField="DateOfRecd" HeaderText="DateOfRecd" DataFormatString="{0:dd-MMM-yy}" SortExpression="DateOfRecd" />

我的 C# 代码是:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string v_ExpiryDate = (string)DataBinder.Eval(e.Row.DataItem, "DateOfRecd");
        string Test = DateTime.Compare(DateTime.Now, Convert.ToDateTime(v_ExpiryDate)).ToString();
        if (Test == "0")
        {
            e.Row.BackColor = System.Drawing.Color.Red;
        }
        else
        {
            e.Row.BackColor = System.Drawing.Color.White;
        }
    }
}

【问题讨论】:

    标签: c# asp.net date gridview rowdatabound


    【解决方案1】:

    我非常怀疑Test 的值永远不会是0DateTime.Compare 给出 3 个可能的值,-1、0 和 1。如果 T1 小于 T2,则为负数;如果 T1 大于 T2,则为 1。 仅当两个日期相同时,该值才会为 0,而且这是极不可能的,因为 DateTime.Now 给了您第二个日期的时间。因此,如果DateOfRecd 不准确到您打开页面的那一刻,GridView 行将永远不会是红色的。

    我认为您只需要日期部分,而不是小时和秒。所以使用`DateTime.Now.Date'

    string Test = DateTime.Compare(DateTime.Now.Date, Convert.ToDateTime(v_ExpiryDate)).ToString();
    

    或者直接比较日期。

    if (DateTime.Now.Date > ExpiryDate)
    {
        e.Row.BackColor = System.Drawing.Color.Red;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多