我使用C#做的Winform程序中,使用了一个DateGridView空间,其中一列绑定的后台数据是Datetime类型,初始是为空。现在如果输入了内容后,清空,然后单元格焦点离开就会报错。DataGridView Default Error DialogThe following exception occurred in the DataGridView:System.FormatException: String was not recognized as a valid Datetime. --->……也就是说空字符串没有被识别为有效的日期类型,如何才能让这个空字符串变成DBNull存回去呢,有没有遇到过这个问题的朋友,看看如何解决?

解决方案 »

  1.   

    这是因为:
       “一列绑定的后台数据是Datetime类型”,使得DateGridView控件对单元格的值才去默认类型约束检查:即针对类型检查!正是因为你把单元格清空了,变成null,自然无法与Datetime转换,就会抛出异常!解决办法:清空时,程序默认给一个时间的初始值:        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;
                }
            }