我在DataGrid中添加了一个编辑列,用来更新和取消,但是更新老是不成功,老是出错,说是“输入字符串的格式不正确”。但是我反复看了我的更新语句,应该不会有错误的啊, 但是还是出错,我帖出代码来:希望各位大虾帮帮忙啊!
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
    BBS bbs=new BBS();
string name=e.Item.Cells[1].Controls[0].ToString();
string con=e.Item.Cells[2].Controls[0].ToString();
string s1="update themes set tname='"+name+"',comment='"+con+"' where tid="+Convert.ToInt32(e.Item.Cells[0].Text);
string s2="select * from themes";
bbs.ExeSql(s1);
DataTable dt=new DataTable();
dt=bbs.ExeSqldt(s2);
this.DataGrid1.DataSource=dt.DefaultView;
this.DataGrid1.DataBind();
}

解决方案 »

  1.   

    问题1:e.Item.Cells[2].Controls[0].ToString()是“System.Web.UI.WebControls.**”的字串,这应该不是你想要的,应该是e.Item.Cells[2].Controls[0].Text之类的
    问题2:Convert.ToInt32(e.Item.Cells[0].Text)这句可能出错,因为Text可能不能转化为数字
    问题3:如果把用户输入的数据当作数据库语句的参数,如name和con都应该先去除“'”,即单引号,这是每个sql语句最基本的.(str = str.Replace("'", "''"); )
      

  2.   

    问题1:e.Item.Cells[2].Controls[0].ToString()是“System.Web.UI.WebControls.**”的字串,这应该不是你想要的,应该是e.Item.Cells[2].Controls[0].Text之类的
    我早就试过了e.Item.Cells[2].Text这个,不行。
    问题2:Convert.ToInt32(e.Item.Cells[0].Text)这句可能出错,因为Text可能不能转化为数字
    这个是可以转化的。我写删除语句的时候后面的条件就是用Convert.ToInt32(e.Item.Cells[0].Text)。("delete from themes where tid="+Convert.ToInt32(e.Item.Cells[0].Text);)
    问题3:如果把用户输入的数据当作数据库语句的参数,如name和con都应该先去除“'”,即单引号,这是每个sql语句最基本的.(str = str.Replace("'", "''"); )
    我是在后台写SQL语句啊,是要单引号的啊,那你如果是你写,你写出来给我看看啊!