c#
  • asp.net
  • try-catch
  • eval
  • 2012-06-20 88 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

    相關問題