0

我有一个 DateTime 数据类型的列。我想在 ASP.NET 的 GridView 中将此列的值显示为是/否。如果 DateTime 字段为“Is Null”,则显示“No”,如果 DateTime 字段列“Is Not Null”则在网格视图中显示“No”如何执行。无论是在 SQL Query 中还是在 GridView 绑定中执行。

我在 GridView 中尝试过,但失败了。我知道下面的代码是错误的,并且在 SQLQuery 中我检查了它的 ISNULL。

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

帮助赞赏!提前致谢。

4

4 回答 4

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"; 
    }
}
于 2012-10-01T07:32:41.410 回答
1

在后面的代码中定义一个函数并在 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
于 2012-10-01T07:42:53.783 回答
0

您可以将此属性用于网格视图中的 DateTime 字段列 NullDisplayText="NO

于 2012-10-01T07:39:29.333 回答
0

您可以在 GridView 中执行此操作,而无需检查 SQL。只需修改 GridView 中的代码以检查DBNull.Value而不是尝试转换为布尔值。

IE

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

于 2012-10-01T08:29:49.720 回答