我在客户对象上有DateTime Birthday的SQL DB列。数据库允许该字段为空,但有时我们的用户使用1/1/1900
填充数据(来自另一个系统)。
当数据库中的日期为空或DateTime.Parse("1900-01-01 00:00:00.000")
时,我想让我的DatePicker字段显示任何内容。 (它不必完全空白,但可以使DatePicker字段的标准默认值为" / / "
。
我一直在尝试这个:
dtBirthday.Value = customer.Birthday.HasValue ? customer.CustomerOptions.Birthday.Value : DateTime.Parse("1900-01-01 00:00:00.000");
对于null生日而言效果相当不错,但不允许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。
答案 0 :(得分:0)
如果我正确地阅读了您的问题,我认为您希望生日实际为空时文本字段为空。为什么不用空字符串填充它:
txtBirthday.Value =
customer.Birthday.HasValue ?
customer.CustomerOptions.Birthday.Value.ToString() :
string.Empty;
答案 1 :(得分:0)
在尝试了几十种不同的方法后,其中没有一种方法真正做到我想要的,我突然发现我可以没有设置值。
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;
}