sqlcom.Parameters.Add("@ID",SqlDbType.Int);//SqlDbType.Int是你的@ID的类型,根据你的数据类型给定,如果是Varchar等数据类型还需要第三个参数长度sqlcom.Parameters.Add("@ID",System.Data.SqlDbType.VarChar,3);sqlcom.Parameters["@ID"].Value=key;//赋值语句。

解决方案 »

  1.   

    e.Item.Cells[1].Controls[0])).Text:
    如果这是模板列就没有错。但你这不是吧
      

  2.   

    To: CMIC(大象) 
    ID是int型的,Name,Sex是vachar型的,我按你说的哪样重写了一次(可能没理解你的意思),还是出现指定的转换无效的提示,不知如何更改,请现指点一下!
    sqlcom.Parameters.Add("@ID",SqlDbType.Int);
    sqlcom.Parameters["@ID"].Value=key;
    sqlcom.Parameters.Add("@Name",System.Data.SqlDbType.VarChar,3);
    sqlcom.Parameters.Add("@Name",((TextBox)(e.Item.Cells[1].Controls[0])).Text);       
    sqlcom.Parameters.Add("@Sex",System.Data.SqlDbType.VarChar,3);
    sqlcom.Parameters.Add("@Sex",((TextBox)(e.Item.Cells[2].Controls[0])).Text);
    另外这不是模板列。
      

  3.   

    问题有2个
    1: sqlcom.Parameters.Add("@Name",((TextBox)(e.Item.Cells[1].Controls[0])).Text);////
    --->
    sqlcom.Parameters.Add("@Name",e.Item.Cells[1].Controls[0].Text);直接这样写就ok了
    Parameters.Add会自动转换大部分类型(起码money好像不支持),不用你自己操心
    2:
    string sqlquery="update vs_First"+
                "Name=@Name"+
                "Sex=@Sex where ID=@ID";
    ---》
    string sqlquery="update vs_First"+
                "Name=@Name,"+//你这里少个逗号
                "Sex=@Sex where ID=@ID";