ASP.net:
...
<asp:BoundField HeaderStyle-Width="7%" DataField="Due Date" HeaderText="Due" SortExpression="Due Date" ItemStyle-CssClass="taskTableColumn" />
...
C#代码(RowDataDound
中的GridView
):
if (!string.IsNullOrEmpty(e.Row.Cells[4].Text)) //works correctly
{
if (DateTime.Parse(e.Row.Cells[4].Text).Date < DateTime.Now.Date)
{
e.Row.ForeColor = Color.FromName("#C00000");
e.Row.ToolTip = "Task is Past Due";
}
else if (DateTime.Parse(e.Row.Cells[4].Text).Date <= DateTime.Now.AddDays(inDateOffset).Date)
{
//e.Row.ForeColor = Color.FromName("#8A8C00");
e.Row.ToolTip = "Task is at Risk";
}
else
{
e.Row.Cells[5].ToolTip = "Task is Not Due Yet";
}
}
上述ASP.net/C#代码工作正常。
我必须修改ASP.net以格式化该字段:
<asp:TemplateField HeaderStyle-Width="7%" HeaderText="Due" SortExpression="Due Date" ItemStyle-CssClass="taskTableColumn">
<ItemTemplate>
<asp:Label ID="lblDue" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Due Date", "{0:MM-dd-yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
现在,以下行始终返回空字符串:if (!string.IsNullOrEmpty(e.Row.Cells[4].Text))
如何修改C#代码,以便能够确定日期是否已到期。
答案 0 :(得分:2)
因为您现在使用的是<asp:TemplateField>
,所以您无法再以相同的方式获取文字。您必须找到实际的标签控件。您不必使用e.Row.Cells
,而是使用绑定数据的标签。
Label lblDue = (Label)e.Row.FindControl("lblDue");
if (!string.IsNullOrEmpty(lblDue.Text))
{
...
}