DataGridView某列绑定数据类型替Datetime,输入内容然后清空报错,求帮助
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#做的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; } }