【问题标题】:How to Convert DateTime to boolean in ASP.NET GridView?如何在 ASP.NET GridView 中将 DateTime 转换为布尔值?
【发布时间】:2012-09-22 01:16:39
【问题描述】:

我有一个 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>

帮助赞赏! 提前致谢。

【问题讨论】:

  • “我试过了”:什么你尝试了,如何失败了?该值是 DataSet 还是其他什么?它是纯日期时间(不能为空)还是可以为空的日期时间?请编辑并扩展您的问题。
  • 根据您的定义,您总是显示“否”。
  • 如何使用 SQL Select 查询显示它。如果 DateTime 列为 Null,则显示“No”,如果 Not Null,则显示“Yes”...?

标签: asp.net sql-server datetime gridview


【解决方案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"; 
    }
}

【讨论】:

    【解决方案2】:

    您可以将此属性用于gridview NullDisplayText="NO

    中的DateTime 字段列

    【讨论】:

      【解决方案3】:

      在后面的代码中定义一个函数,并在 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
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2010-09-18
          • 1970-01-01
          • 2016-10-07
          • 2016-05-14
          • 1970-01-01
          • 2015-03-26
          • 2016-01-13
          • 2015-09-27
          • 2016-09-28
          相关资源
          最近更新 更多