cmd.Parameters .Add (new SqlParameter ("@birthday",SqlDbType.DateTime  ,8));
cmd.Parameters ["@birthday"].Value =Convert.ToDateTime((e.Item.FindControl("TextBox1") as TextBox).Text) ;
其中TextBox1是EditItemTemplate中的一个控件,我在里面加了验证控件,但是在更新这个数据的时候确是无效转换,那应该怎么处理呢?哪位朋友指点一下,谢谢

解决方案 »

  1.   

    将数据格式转换一下试一下,而且DATAGRID中用验证控件比较麻烦,其实不如设置数据格式比较容易实现你所需要的功能
      

  2.   

    string myupdate="update Employees SET  LastName=@lastname,FirstName=@firstname,Title=@title where EmployeeID=@empID";
    SqlConnection con=DB.CreateCon ();
    SqlCommand cmd=new SqlCommand (myupdate,con);
    cmd.Parameters .Add (new SqlParameter ("@empID",SqlDbType.Int  ,4));
    cmd.Parameters ["@empID"].Value =this.DataGrid1 .DataKeys [(int)e.Item .ItemIndex ];
    cmd.Parameters .Add (new SqlParameter ("@lastname",SqlDbType.NVarChar ,20));
    cmd.Parameters ["@lastname"].Value =((TextBox)e.Item .Cells[2].Controls [0]).Text ;
    cmd.Parameters .Add (new SqlParameter ("@firstname",SqlDbType.NVarChar ,10));
    cmd.Parameters ["@firstname"].Value =((TextBox)e.Item .Cells[3].Controls [0]).Text ;
    cmd.Parameters .Add (new SqlParameter ("@title",SqlDbType.NVarChar ,30));
    cmd.Parameters ["@title"].Value =((TextBox)e.Item .Cells[4].Controls [0]).Text ;
    cmd.Parameters .Add (new SqlParameter ("@birthday",SqlDbType.DateTime ));
    cmd.Parameters ["@birthday"].Value = Convert.ToDateTime((e.Item.FindControl("TextBox1") as TextBox).Text) ;
    cmd.Connection .Open ();
    cmd.ExecuteNonQuery ();
    cmd.Connection .Close ();
    大家帮忙看看错误出在哪里了,谢谢
      

  3.   

    string tempstr=(TextBox)e.Item.FindControl("TextBox1").Text;
    先测试一下取出的数据,看看是不是能转成日期格式
      

  4.   

    错误出在两个地方,首先在sql语句没有要更新@birthday数据的项,第二个就是转换的时候出问题,应该是cmd.Parameters ["@birthday"].Value = Convert.ToDateTime(((TextBox)(e.Item.FindControl("TextBox1") as TextBox)).Text) ;
    这样就可以正确解出来了
    谢谢大家