数据库DATETIME设置为允许空值,但页面通过DATAGRID控件(注:DATAGRID绑定了数据集)修改时若输入空值将产生错误:
该字符串未被识别为有效的 DateTime...
这应该是ASP.NET中映射为不允为空。一直没搞明白怎么解决这个问题,请大家帮忙,谢谢!
该字符串未被识别为有效的 DateTime...
这应该是ASP.NET中映射为不允为空。一直没搞明白怎么解决这个问题,请大家帮忙,谢谢!
解决方案 »
- asp.net在GridView里用js计算文本框的值!
- 不能添加带代码的文章
- 加载水晶报表HTML出错,急,在线等!!!
- button问题
- 申请了个免费.net空间,上传了网页,中文显示乱码
- 能不能在.net工程中自动生成aspx页面呢?
- 新人来提个问题
- Error Initializing Session 上传大数据
- 我刚学.net,请问你们做的顼目是怎么做,
- 关于dataset写入数据库的问题,急,谢谢
- 哪位给一个gridview好看的样式,总觉得调出来的样式不好看,给一个样式表吧?
- help me! Gridview 内DropDownList的更新不了,提示:"无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.DropDownList”"
数据库DATETIME最好别用空值。
哦,我的DATAGRID用于显示数据。修改和插入时是通过文本框操作的。
从文本框向数据库插入空值时就出现问题。不知道怎么办了。
网上看到两个解决办法,没有看明白:
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文件指哪个文件?从哪儿可以找到?