数据库字段为 datetime类型,并允许为空,
  <asp:ObjectDataSource ID="ObjectDataSource1".....>
    <InsertParameters>
      <asp:Parameter Name="birth" ConvertEmptyStringToNull="true"  Type="datetime" />
    </InsertParameters>
</asp:ObjectDataSource>
业务逻辑层调用的函数为 public void Yginfo_Insert(object birth,  ...) 
会出现:无法从“object”转换为“System.DateTime?”的错误.
除非业务逻辑层调用的函数改为:public void Yginfo_Insert(datetime birth,  ...),如果这样我就须输入日期,我想让日期为空,不知如何现实,请高手指教! 

解决方案 »

  1.   

    public void Yginfo_Insert(object birth,  ...) 在这个方法体里面记得判断。
    if(!string.IsnullOrEmpty(birth))
    {
      datetime dt=dateTime.Parse(birth);
    }
    else
    {
      DBnull.value;
    }
      

  2.   

    在ObjectDataSource的Inserting事件中进行:
        protected void ObjectDataSource1_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
        {
            DateTime b=DateTime.Now;
            object ob=(Object)b;
            e.InputParameters["birth"] = ob;
        }
      

  3.   

    public void Yginfo_Insert(datetime? birth,  ...) 
      

  4.   

    我的业务逻辑层调用的函数中用了TableAdapter即
     public void Yginfo_Insert( string name,object birth, object dzrq, object ht_stime, ....)
        {
           yginfoTableAdapters.YGDAAdapter ygobj = new yginfoTableAdapters.YGDAAdapter();
            ygobj.Insert(  string name,birth, dzrq,ht_stime,...);    }
    我想让即使日期为空也能插入数据成功.
    如果用 (DateTime)object也不行