2

在 Visual Studio 的 .xsd 设计器中设计数据表时,有一个属性指定当表遇到空值时要做什么:

截屏

问题是,如果DataTypeSystem.DateTime,我无法返回emptynothing。它总是抛出异常。

在我工作时,我可以执行以下操作:

If(row.IsDateLastRecallPrintedNull, DateTime.MinValue, row.DateLastRecallPrinted)

但如果值为DbNull.Value,我宁愿让它返回。

4

1 回答 1

3

使用 IsDateLastRecallPrintedNull 不是一种解决方法,而是打算使用它的方式。如果您使用可为空的日期,则可以在代码中将其设置为空,而不是 DateTime.MinValue。或者,您可以将数据集中的数据类型更改为 System.Object,然后您可以在下拉列表中选择“(无)”。请注意,您可以使用适合数据类型的另一个值覆盖属性中的 NullValue 条目,尽管如果您输入 DateTime.Minvalue 它将不起作用 - 它似乎会接受它,但随后会失败 - 但您可以输入在另一个幻数中,例如 01/01/1900。

所有这一切都是“设计使然”。*

使用数据绑定在很大程度上避开了这个泥潭。如果您正在以编程方式从数据集中读取,那么 IsxxxNull 是要走的路。

*我怀疑这通常是微软主义,因为“我们没有在发货日期之前完成它”

于 2013-11-22T19:29:18.563 回答