2010年2月24日星期三

ObjectDataSource 使用中的Null值问题

在使用数据控件Gridview/DetailView/FormView 绑定ObjectDataSource进行插入或者更新的时候。对于数据库中允许为空的列 往往会出现如下的几种错误:

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

异常详细信息: System.Data.SqlClient.SqlException: 过程 'usp_XXX' 需要参数 '@XXX,但未提供该参数。

...

产生这些错误的原因为数据控件在插入或者更新数据时自动把未输入的栏转换成null,然后传递给ObjectDataSource的参数引起的。

解决方法:

 在ObjectDataSource的Updating  Inserting 事件中判断输入参数是否为空,如果为空将其赋为默认值


protected void ObjectDataSource1_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        if (e.InputParameters["XX"] == null)
        {
            e.InputParameters["ParentDeptNo"] = "";
        }
    }



发表评论