如果列日期多于今天的日期,如何在网格视图中更改背景颜色
本文关键字:日期 视图 网格 颜色 背景 于今天 今天 如果 | 更新日期: 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
。
但是在这种情况下,您应该更喜欢使用GridViewRow
的DataSource
来获得真正的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;
}
}