2011-07-08 29 views
5

這看起來應該很簡單,但我完全失敗,關於如何實現的MSDN示例根本沒有解決格式化問題。我有一個TextBox我能夠綁定到Date類型的字段,如下所示:在FormView中格式化日期EditItemTemplate

<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("CheckDate") %>' /> 

但是我不使用時間部分,並想在編輯模式下將現有值顯示爲短日期格式。現在我得到「MM/dd/yyyy hh:mm:ss」。

嘗試將格式代碼添加到Bind表達式會導致編譯錯誤,但我不知道在FormView.EditItemTemplate中設置綁定的其他方式。幫幫我!

回答

15
Text='<%# Bind("CheckDate", "{0:MM/dd/yyyy}") %>' 

應該工作

但你也可以做到這一點的代碼隱藏在一個更可讀的方式(IMO ToShortDateString是更具可讀性比Bind("CheckDate", "{0:MM/dd/yyyy}")

Private Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound 
     Select Case FormView1.CurrentMode 
      Case FormViewMode.Edit 
       Dim dr = DirectCast(FormView1.DataItem,DataRowView) 
       Dim TextBox1 = DirectCast(FormView1.FindControl("TextBox1"), TextBox) 
       Dim CheckDate = DirectCast(dr("CheckDate"), Date) 
       TextBox1.Text = CheckDate.ToShortDateString() 
     End Select 
    End Sub 
+0

謝謝,我不知道'Bind()'接受一個可選的格式字符串。 '「{0:d}」'爲我工作。 – pseudocoder

+0

感謝add'l示例,如果我需要在將來對初始值進行更復雜的操作,可能會很有用。我可以給你+1兩次嗎? ;)海事組織的內聯例子是最可讀的(但代碼隱藏之一絕對是最「可輻射的」)。 – pseudocoder

4

可以使用格式字符串作爲您的bind屬性中的第二個參數

<%# Bind("CheckDate", "{0:MM/dd/yyyy}") %> 

一個不錯的set of patterns你可以用它來格式化日期

+0

感謝日期格式字符串模式... – pseudocoder

1

可以在日期格式使用{0:d}同時結合或定義文化在Web.config中使用MM/DD/YYYY格式。