0

我正在使用通过 sqldatasource 连接到我的数据库的 gridview 控件。我可以直接从此 gridview 进行更新和删除。

当我编辑日期字段并删除内容时,它不是将 null 写入数据库,而是将数据库中的值更改为 1900-01-01,如果我手动将 null 写入数据库,并在其上使用 gridview 的编辑按钮其他一些单元格的行,下面是错误。

对象不能从 DBNull 转换为其他类型。

4

1 回答 1

0

首先检查数据库列是否可以为空?

您还没有提到您使用的是哪个版本的 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.
于 2013-02-21T09:46:20.000 回答