数据库DATETIME设置为允许空值,但页面通过DATAGRID控件(注:DATAGRID绑定了数据集)修改时若输入空值将产生错误:
该字符串未被识别为有效的 DateTime...
这应该是ASP.NET中映射为不允为空。一直没搞明白怎么解决这个问题,请大家帮忙,谢谢!

解决方案 »

  1.   

    修改时判断是空值就用null
    数据库DATETIME最好别用空值。
      

  2.   

    要求允许空值,只是不知道怎么处理就可以录入空值。
    哦,我的DATAGRID用于显示数据。修改和插入时是通过文本框操作的。
    从文本框向数据库插入空值时就出现问题。不知道怎么办了。
      

  3.   

    有没有人帮我好好看一下,把空值也搞进去?我觉得不该是个很难的问题,但对我这个新手实在没办法了。
    网上看到两个解决办法,没有看明白:
    http://www.cnblogs.com/maplye/archive/2006/07/01/440449.html
    NHibernate中DateTime,int,bool空值的处理方法:
    我们知道,数据库中DateTime子段允许为空(null)。当我们在ASP.NET中映射为DateTime是就不允为空了。该怎么处理?基本有两种办法: 
    (1)修改.hbm.xml文件中的类型,该"DateTime"为"String",该实体文件中的属性类型"DateTime"为"String"。 
        处理的时候,该属性值要么为空,要么是具有正确日期格式的字符串。 
      该方法只适合DateTime类型,而对int,bool类型就不适应了。下面就看第二种方法。 
    (2)Nullables处理 
        (1)添加引用:Nullables.dll与Nullables.NHibernate.dll 
        (2)修改配置文件.hbm.xml对应的类型,如: 
       <property name="InDate" column="inDate" type="DateTime"/>修改为: 
       <property name="InDate" column="inDate" type="Nullables.NHibernate.NullableDateTimeType,Nullables.NHibernate"/> 
        (3)修改实体类文件,如: 
        private DateTime _inDate; 
          /// <summary> 
          /// 添加日期 
          /// </summary> 
          public DateTime InDate 
          { 
               get { return _inDate; } 
               set { _inDate = value; 
         }   修改为: 
         private Nullables.NullableDateTime _InDate; 
          /// <summary> 
          /// 添加日期 
          /// </summary> 
          [NHibernate.Mapping.Attributes.Property] 
          public Nullables.NullableDateTime InDate 
          { 
               get { return _InDate; } 
               set { _InDate = value; } 
          } 
         (4)给属性InDate赋值: 
            Item clsItem = new Item(); 
            clsItem.InDate = new NullableDateTime(System.DateTime.Now); 
            如果要输入空值,如:clsItem.InDate = nulll;      (5)获取属性InDate的值:
            ItemCRUD clsCRUD = new ItemCRUD();  //对实体类的操作
            Item clsItem = clsCRUD.ItemDetails(id);  //获取实体类
            this.txtInDate.Text = clsItem.InDate.ToString();
           
            通过第二种方法可以对数据库中对应的整形、bool类型等赋空值。 hbm.xml文件指哪个文件?从哪儿可以找到?
      

  4.   

    在vo层定义DateTime类型,给后面加个问好  如:  Private m_BIRTHDAY As DateTime?