2012-10-01 109 views
0

我有一個DateTime數據類型的列。我想在ASP.NET的GridView中將此列的值顯示爲是/否。如果日期時間字段爲「空」,則顯示「否」,如果日期時間字段列爲「不爲空」,則在網格視圖中顯示「否」如何執行此操作。是否在SQL查詢或GridView綁定中執行此操作。如何在ASP.NET GridView中將DateTime轉換爲布爾值?

我已經在GridView中試過了,但是失敗了。我知道下面的代碼是錯誤的&在SQLQuery中我已經檢查過它的ISNULL。

<ItemTemplate> 
     <asp:Label ID="lblOndate" runat="server" Text='<%# Convert.ToBoolean(Eval("OnDate")) ? "Yes" : "No" %>' ReadOnly="true"> 
     </asp:Label> 
</ItemTemplate> 

幫助讚賞! 在此先感謝。

+0

_What_你試過嗎? –

+0

「我試過了」:*您嘗試了什麼*以及*如何失敗?在DataSet中還是其他值?它是一個普通的DateTime(不能爲空)或可爲空的DateTime?請編輯並擴展您的問題。 –

+1

根據您的定義,您總是顯示「否」。 –

回答

0

你可以在GridView中做任何檢查而不用SQL。只需修改GridView中的代碼即可檢查DBNull.Value而不是嘗試轉換爲布爾值。

<asp:Label ID="lblOndate" runat="server" Text='<%# Eval("OnDate") == DBNull.Value ? "No" : "Yes" %>' ReadOnly="true"></asp:Label>

+0

感謝@tristankoffee這工作正常...! –

+0

不客氣:) – tristankoffee

1

一種方法是使用RowDataBound

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; 
     DateTime? dt = row.Field<DateTime?>("OnDate"); 
     Label lblOndate = (Label)e.Row.FindControl("lblOndate"); 
     lblOndate.Text = dt.HasValue ? "Yes" : "No"; 
    } 
} 
0

您可以在GridView NullDisplayText使用該屬性爲DateTime字段列=「NO

1

在代碼中定義behinde一個功能及調用的參數geidview列如下:

<asp:TemplateField HeaderText="" HeaderStyle-HorizontalAlign="Center" 
      ItemStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center"> 
      <ItemTemplate> 
       <asp:Label ID="lbl_SPORT_TYPE" runat="server" Text='<%#StatusName(Eval("SPORT_DATE")) %>'></asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 

後面的代碼:

Public Function StatusName(ByVal SportDate As DateTime?=nothing) As String 
    If SportDate Is Nothing Then 
     Return "yes" 
    Else 
     Return "no" 
    End If 
End Function