在Visual Studio中的.xsd设计器中设计数据表时,有一个属性指定当表遇到空值时要执行的操作:
问题是,如果DataType
为System.DateTime
,我将无法返回empty
或nothing
。它总是抛出异常。
当我解决问题时,我可以执行以下操作:
If(row.IsDateLastRecallPrintedNull, DateTime.MinValue, row.DateLastRecallPrinted)
但如果值为DbNull.Value
,我宁愿让它返回。
答案 0 :(得分:3)
使用IsDateLastRecallPrintedNull不是一种解决方法,它的使用方式就是这样。如果您使用可以为空的日期,则可以在代码中将其设置为空而不是DateTime.MinValue。或者,您可以将数据集中的数据类型更改为System.Object,然后您可以在下拉列表中选择“(Nothing)”。请注意,您可以使用适合数据类型的其他值来改写属性中的NullValue条目,但是如果您输入DateTime.Minvalue它将无效 - 它似乎接受它,但随后失败 - 但您可以放置在另一个神奇的数字,如01/01/1900。
这一切都是'按设计'。*
使用数据绑定可以在很大程度上避开这个泥潭;如果你是从数据集中以编程方式阅读,那么IsxxxNull就是你的选择。
*我怀疑这通常是微软主义的'我们没有按发货日期完成'