我正在使用通过 sqldatasource 连接到我的数据库的 gridview 控件。我可以直接从此 gridview 进行更新和删除。
当我编辑日期字段并删除内容时,它不是将 null 写入数据库,而是将数据库中的值更改为 1900-01-01,如果我手动将 null 写入数据库,并在其上使用 gridview 的编辑按钮其他一些单元格的行,下面是错误。
对象不能从 DBNull 转换为其他类型。
我正在使用通过 sqldatasource 连接到我的数据库的 gridview 控件。我可以直接从此 gridview 进行更新和删除。
当我编辑日期字段并删除内容时,它不是将 null 写入数据库,而是将数据库中的值更改为 1900-01-01,如果我手动将 null 写入数据库,并在其上使用 gridview 的编辑按钮其他一些单元格的行,下面是错误。
对象不能从 DBNull 转换为其他类型。
首先检查数据库列是否可以为空?
您还没有提到您使用的是哪个版本的 asp.net 框架。
对于 .net framework >= 3.5,您可以使用可为空的数据类型,即绑定应该使用日期时间?字段而不是日期时间。您提到的错误是由于您试图将空值绑定到 datetime 类型的变量。使用日期时间?并且您的错误“对象无法从 DBNull 转换为其他类型”将得到解决。或者您可以在 itemdatabound 事件中执行以下操作:
yourTextBox.value = string.empty
if(((DataRow)e.Item.DataItem)["YourDateField"] != dbnull.value)
{
yourTextBox.value = ((DataRowView)e.Item.DataItem)["YourDateField"] .toString();
}
您还没有提到您为数据绑定/数据保存所做的工作。在数据保存代码中执行以下操作:
datetime? saveDate = null;
if(!string.isnullorempty( yourTextBox.value))
{
saveDate = converto.datetime( yourTextBox.value);
}
//Use the saveDate for the saving.