我在GridView中有一个控件,可以将dateformat从 MMddyyyy 转换为 ddMMyyyy 。
<ItemTemplate>
<asp:Label ID="lblName" runat="server"
Text='<%# Eval("Value1") != DBNull.Value ?
(Convert.ToDateTime(Eval("Value1")).ToString("dd/MM/yyyy")) : Eval("Value1") %>'>
</asp:Label>
</ItemTemplate>
如果它获得日期或 null 值,则效果非常好。
但在我的情况下, Value1(绑定字段)可以是包含任何内容的字符串。说 - 'garbageStr' 。
因此无法转换为日期并抛出错误。
相反,我想在无法转换为DateTime格式时显示 null 或 空白值 。< / p>
有没有办法解决这个问题?
答案 0 :(得分:2)
你可以在后面的代码中为此目的定义一个方法,然后调用它,然后在方法实现中尝试DateTime.TryParse
中的转换并返回字符串accordingly
答案 1 :(得分:2)
在您的aspx文件中:
<asp:Label ID="lblName" runat="server" Text='<%# ReturnPropertDateTime(Eval("Value1")) %>'> </asp:Label>
在您的Code Behind文件中:
protected DateTime ReturnPropertDateTime(object val)
{
DateTime dt = null;
string dateTimeValue = Convert.ToString(val);
DateTime dateTime2;
if (DateTime.TryParse(dateTimeValue.ToString("ddMMyyyy"), out dateTime2))
{
dt = dateTime2;
}
else
{
dt = // Just Assign Default date time value you want.
}
return dt;
}
虽然它很乏味,但你可以通过这种方法使你的aspx文件更具可读性,因为它可以防止崩溃并提供灵活的处理。