2

给定:

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public DateTime Birthdate { get; set; }
}

我有一些未输入生日的列表,因此当我绑定到 GridView 时,它显示 DateTime.MinValue。如果生日是 DateTime.MinValue,有哪些不同的方法可以在 gridview 中显示空白?

4

3 回答 3

10

除非将其映射到数据库,否则我会将其设为可空:

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public DateTime? Birthdate { get; set; }
}

编辑:

如果它被映射,那么我只需为其创建一个只读可为空的值:

public DateTime? BirthdateDisplay
{
   get
   {
      if (this.Birthdate == default(DateTime))
         return null;
      else
         return this.Birthdate;
   }   
}
于 2012-04-27T19:54:39.067 回答
3

您可以向 Customer 添加一个名为 BirthDateStr 的附加属性。

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public DateTime Birthdate { get; set; }
    public string BirthDateStr
    {
        get
        {
            if (Birthdate != DateTime.MinValue)
                return Birthdate.ToString();
            else
                return "";
        }
}

显然,您可以对 getter 中的 BirthDateStr 进行任何您想做的格式化,以使其与您的格式相匹配。

于 2012-04-27T19:57:02.403 回答
1

或者,您可以更新前端 GridView 显示以隐藏 DateTime.MinValue,如下所示:

<asp:TemplateField HeaderText="Last Request Date">
<ItemTemplate><%# (DateTime)Eval("LastRequestDate").Equals(DateTime.MinValue) ? "" : string.Format("{0:dd/MM/yyyy hh:mm:ss tt}", (DateTime)Eval("LastRequestDate")) %></ItemTemplate>

于 2016-04-08T06:11:46.600 回答