2013-02-21 96 views
0

我正在使用通过sqldatasource连接到我的数据库的gridview控件。我可以直接从这个GridView中进行更新和删除。数据库结果中datetime的Gridview空值对象不能从DBNULL转换为其他类型错误

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

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

回答

0

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

你还没有提到你正在使用的是哪个版本的asp.net框架。

对于.net框架> = 3.5,您可以使用可空数据类型,即绑定应该与日期时间?字段而不是日期时间。您提到的错误是由于您试图将空值绑定到类型datetime的变量。使用dateime?和您的错误“对象不能从DBNull转换为其他类型”将得到解决。或者你可以做的ItemDataBound事件如下:

yourTextBox.value = string.empty 
if(((DataRow)e.Item.DataItem)["YourDateField"] != dbnull.value) 
{ 
    yourTextBox.value = ((DataRowView)e.Item.DataItem)["YourDateField"] .toString(); 
} 

你在做什么数据绑定/ datasaving您没有提及。在数据保存代码中执行以下操作:

datetime? saveDate = null; 
if(!string.isnullorempty(yourTextBox.value)) 
    { 
    saveDate = converto.datetime( yourTextBox.value); 


    } 

//Use the saveDate for the saving. 
相关问题