如果列日期多于今天的日期,如何在网格视图中更改背景颜色

本文关键字:日期 视图 网格 颜色 背景 于今天 今天 如果 | 更新日期: 2023-09-27 18:14:54

我想显示如果续订日期列日期大于今天的日期,那么它应该突出显示背景颜色=红色。这里我没有得到单元格7的值。取值为更新日期col - 15-02-2014

 <asp:TemplateField HeaderText="Renewal Date"  >
        <ItemTemplate>
              <a href='ChangeRenewaldate.aspx?Linkid=<%#Eval ("LinkId")%>'>
              <asp:Label ID="lblRenewal" runat="server"  Text='<%# Eval("RenewalDate","{0:dd-MM-yyyy}") %>'></asp:Label>          </ItemTemplate>    
     </asp:TemplateField>

protected void GrdV_Projects_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (!string.IsNullOrEmpty(e.Row.Cells[7].Text))
            {
                if (e.Row.Cells[7].Text > DateTime.Now.ToString())
                {
                    e.Row.Cells[7].BackColor = System.Drawing.Color.Red;
                }
                else
                {
                    e.Row.Cells[7].BackColor = System.Drawing.Color.Green;
                }
            }
        }
    }

如果列日期多于今天的日期,如何在网格视图中更改背景颜色

如果您使用TemplateFields,则必须使用FindControl来获得对控件的引用,如果您使用BoundFields,则必须使用e.Row.Cell[index].Text。因此,您可以使用以下命令:

Label lblRenewal = (Label) e.Row.FindControl("lblRenewal");

查找Label,然后解析为Text

但是在这种情况下,您应该更喜欢使用GridViewRowDataSource来获得真正的DateTime,而不是解析字符串:

protected void GrdV_Projects_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRow row = ((DataRowView)e.Row.DataItem).Row;
        DateTime renewalDate = row.Field<DateTime>("RenewalDate");
        if (renewalDate.Date > DateTime.Today)
            e.Row.Cells[7].BackColor = System.Drawing.Color.Red;
        else
            e.Row.Cells[7].BackColor = System.Drawing.Color.Green;
    }
}