vb.net - 不要对 XSD 生成的 DataTable 类的空日期抛出异常

标签 vb.net datatable xsd visual-studio-designer

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

screenshot

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

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

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

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

最佳答案

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

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

使用数据绑定(bind)可以在很大程度上避开这个泥潭;如果您以编程方式从数据集中读取数据,那么 IsxxxNull 就是正确的选择。

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

关于vb.net - 不要对 XSD 生成的 DataTable 类的空日期抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149824/

相关文章:

google-maps - Google Maps API V3,响应 XML 的 XSD

xml - Visual Studio 2010 中的 XSD key/keyref intellisense 验证支持

css - 如何将 CSS 类应用于 ASP.NET MVC 中的 Html.ActionLink?

mysql - 将 GridView 数据复制到数据库中的表中

c# - c#中运算符的问题

java - 王牌 :dataTable default filter

c++ - "Not responding"在 COM 对象执行函数期间

.net - 在数据源中删除的行的 DataAdapter.Fill() 行为

c# - 我的 C# 应用程序中应该使用多少个 DataTable 对象?

xml - targetNamespace 和 xmlns