c#
  • asp.net
  • try-catch
  • eval
  • 2012-06-20 97 views 0 likes 
    0

    我在GridView中有一个控件,它可以转换dateformat从MMddyyyyddMMyyyy页面设计上的错误处理

    <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> 
    

    这完美的作品,如果它得到日期值。

    但在我的情况下Value1(绑定字段)可以是一个包含任何内容的字符串。说 - 'garbageStr'

    因此它无法转换为日期并抛出错误。

    相反,我想,当它不能转换为DateTime格式显示空白值

    有什么办法可以解决这个问题吗?

    回答

    2

    可以用于此目的的代码中定义的方法落后,在DateTime.TryParse调用它,然后在方法的实施尝试转换,并返回字符串accrdingly

    +0

    你为什么不使用DateTime.TryParse – skhurams

    +1

    http://www.dotnetperls.com/datetime-tryparse – skhurams

    +0

    感谢@skhurams ...代码编辑 – Rab

    2

    在你的aspx文件:

    <asp:Label ID="lblName" runat="server" Text='<%# ReturnPropertDateTime(Eval("Value1")) %>'> </asp:Label> 
    

    在你代码文件的背后:

    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文件更具有可读性,通过这种方法,因为它可以防止扼杀并提供灵活的处理。

    +0

    我可以在代码背后,但无论如何绑定。 但我希望它能在.aspx(设计)页面中处理它。 – nirav

    +0

    您不希望在代码隐藏中完成处理的任何特定原因?你的aspx看起来很混乱。 –

    +0

    没有。但我试过这种方式。像这样的领域太多 - 总共大约有30个领域。 我必须更改整个代码。 &这些字段也在GridView中,所以我必须处理一些额外的工作。 – nirav

    相关问题