不在gridview中显示datetime min值

时间:2012-04-27 19:53:07

标签: c#

下式给出:

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

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

3 个答案:

答案 0 :(得分:9)

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

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;
   }   
}

答案 1 :(得分: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执行任何格式化操作,使其与您的格式匹配。

答案 2 :(得分: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>