我在网格视图中有一个日期时间字段。
如果数据库返回 null、"" 或 1/1/0001,我需要日期字段为 null 或为空。
如何实现这一目标?我的大脑似乎冻结了。
您可以在这里看到我尝试过的内容:
<asp:TemplateField HeaderText="LastEval" ItemStyle-CssClass="gvColumnSmallCss">
<ItemTemplate >
<asp:Label ID="lblmyLabel" Text='<%# Bind("myField","{0:M/d/yyyy}") %>' runat="server" > </asp:Label>
<%-- Text= ' <%# Eval("myField") !=null ? Convert.ToDateTime(Eval("myField")).ToString("MM/dd/yyyy") : "" %>'
--%>
<%-- Text='<%# Bind("myField","{0:M/d/yyyy}") %>'--%>
</ItemTemplate>
C#代码:
protected void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string myField;
myField= (e.Row.FindControl("lblmyField") as Label).Text;
DateTime? myField= null;
_myField = string.IsNullOrEmpty(myField)
? (DateTime?)null
: (DateTime?)DateTime.Parse(myField);
DateTime checkDate = DateTime.Parse("1/1/00001");
if (lastEval == checkDate.ToString() || myField=="")
{
(e.Row.FindControl("lblmyField") as Label).Text = "";
}
}
}
我也在
RowDataBound
处理程序方法中尝试了类似的方法。
我解决如下,以防有人遇到类似问题:
<asp:Label ID="lblmyLabel" Text= '<%# Convert.ToDateTime(Eval("myField")) != Convert.ToDateTime("01/01/0001") ? Convert.ToDateTime(Eval("myField")).ToString("MM/dd/yyyy") : "" %>' runat="server" > </asp:Label>