DataGridView某列绑定数据类型为Datetime,输入内容然后清空报错,求帮助
我使用C#做的Winform程序中,使用了一个DateGridView空间,其中一列绑定的后台数据是Datetime类型,初始是为空。
现在如果输入了内容后,清空,然后单元格焦点离开就会报错。
DataGridView Default Error Dialog
The following exception occurred in the DataGridView:
System.FormatException: String was not recognized as a valid Datetime. --->
……
也就是说空字符串没有被识别为有效的日期类型,如何才能让这个空字符串变成DBNull存回去呢,有没有遇到过这个问题的朋友,看看如何解决?
------解决方案--------------------不会呀,应该是你的数据源中这一列不能为空吧.
------解决方案--------------------应该是数据库设计的时候表中这个字段的内容不能为空,所以不能保存吧?
------解决方案--------------------
这是因为:
“一列绑定的后台数据是Datetime类型”,使得DateGridView控件对单元格的值才去默认类型约束检查:即针对类型检查!正是因为你把单元格清空了,变成null,自然无法与Datetime转换,就会抛出异常!
解决办法:清空时,程序默认给一个时间的初始值:
C# code
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (e.ColumnIndex == 1) //控制要Datetime的列
{
if(e.Value==null)
{
e.Value = "1900-1-1 00:00:00"; //给定一个默认时间值,你可以改为其他的
e.FormattingApplied = true;
}
}
}
catch (System.Exception ex)
{
e.FormattingApplied = false;
}
}