如何在DB值为空时显示空白日期选择器
本文关键字:显示 空白 日期 选择器 DB | 更新日期: 2023-09-27 18:15:37
我在客户对象上有一个DateTime Birthday的SQL DB列。数据库允许该字段为空,但偶尔我们的用户用1/1/1900
填充数据(来自另一个系统)。
我想让我的DatePicker字段在数据库中的日期为null或DateTime.Parse("1900-01-01 00:00:00.000")
时不显示任何内容。(它不必是完全空白,但可以有DatePicker字段的标准默认值" / / "
。
我一直在尝试这个:
dtBirthday.Value = customer.Birthday.HasValue ? customer.CustomerOptions.Birthday.Value : DateTime.Parse("1900-01-01 00:00:00.000");
这对于空生日工作得相当好,但不允许customer.Birthday
中的日期实际上是DateTime.Parse("1900-01-01 00:00:00.000")
。
事实上,我谷歌了一下,并尝试使用
var nullDate = DateTime.Parse("1900-01-01 00:00:00.000");
if (customer.Birthday.Value == nullDate)
{
dtBirthday.Format = eDateTimePickerFormat.Custom;
dtBirthday.CustomFormat = " ";
dtBirthday.Value = DateTime.FromOADate(0);
dtBirthday.Enabled = true;
}
else
{
dtBirthday.Format = eDateTimePickerFormat.Custom;
dtBirthday.CustomFormat = "M/d/yyyy";
dtBirthday.Value = customer.Birthday.Value;
dtBirthday.Enabled = true;
}
//dtBirthday.Value = customer.Birthday.HasValue ? customer.Birthday.Value : DateTime.Parse("1900-01-01 00:00:00.000");
if (customer.Anniversary.Value == nullDate)
{
dtAnniv.Format = eDateTimePickerFormat.Custom;
dtAnniv.CustomFormat = " ";
dtAnniv.Value = DateTime.FromOADate(0);
dtAnniv.Enabled = true;
}
else
{
dtAnniv.Format = eDateTimePickerFormat.Custom;
dtAnniv.CustomFormat = "MM/dd/yyyy";
dtAnniv.Value = customer.Anniversary.Value;
dtAnniv.Enabled = true;
}
//dtAnniv.Value = customer.Anniversary.HasValue ? customer.Anniversary.Value : DateTime.Parse("1900-01-01 00:00:00.000");
它做的正是我想要的,除了空字段是完全禁用的,即使我已经特别设置它们为enabled=true。
如果我正确地阅读了您的问题,我认为您希望文本字段在生日实际上为空时为空。为什么不直接用一个空字符串填充它呢:
txtBirthday.Value =
customer.Birthday.HasValue ?
customer.CustomerOptions.Birthday.Value.ToString() :
string.Empty;
在尝试了几十种不同的方法之后,没有一种方法真正达到了我的目的,我突然想到我可以直接不设置的值。
var nullDate = DateTime.Parse("1900-01-01 00:00:00.000");
if (customer.CustomerOptions.Birthday.HasValue && customer.CustomerOptions.Birthday.Value != nullDate)
{
dtBirthday.Value = customer.CustomerOptions.Birthday.Value;
}
if (customer.CustomerOptions.Anniversary.HasValue && customer.CustomerOptions.Anniversary.Value != nullDate)
{
dtAnniv.Value = customer.CustomerOptions.Anniversary.Value;
}