r.Id=int.Parse(tb.Text);
r.Id=Convert.ToInt32(tb.Text);我都试过,也不行的,生成不出错了,但是在浏览器里运行时出现“输入字符串的格式不正确”,咋回事呀?
我的数据表pass里面就三个字段,Id是int型,name是char,passd是int.

解决方案 »

  1.   

    就是你所说的问题
    你所输入的字符串不能转化成int,你怎么转化阿。
    建议你对TextBox tb=(TextBox)e.Item.Cells[1].Controls[0];
    这个的文本值跟踪以下,看看是什么
      

  2.   

    可能你的textBox里有非数字的值,
    int i = conver.toint32( string );
      

  3.   

    谢谢大家了,是数据库的问题,呵呵,女巫说的对,
    数据库表名是pass,
    Id是char型,
    name也是char型,
    passwd是int型.
    Id设为主键。但是又出问题了,点更新以后数据库没变化,我更新name字段,并用
    了一个label显示更新结果,但是name并没有被更新,也不提示出错,
    label显示的还是原来数据库的name值。下面是程序代码,我真是看不出来哪里出错了private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
     string key = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
     this.Label1.Text=key;

     TextBox tb=(TextBox)e.Item.Cells[1].Controls[0];

     DataSet1.passRow r;
     r=this.dataSet11.pass.FindById(key);
     r.name=tb.Text;
     this.Label1.Text=tb.Text;
     this.sqlDataAdapter1.Update(this.dataSet11);
     this.DataGrid1.EditItemIndex=-1;
     this.DataGrid1.DataBind();
    }
      

  4.   

    晕死了,我把上面的程序TextBox tb=(TextBox)e.Item.Cells[1].Controls[0];
    改成TextBox tb=(TextBox)e.Item.Cells[2].Controls[0];让读取第三行的值,
    也就是数据库中的passwd,然后更新,居然把数据库中的passwd更新到了name
    中,这不是说明程序没写错,但是为啥我修改的值程序却不能更新?
    快救救我吧,快被被折磨死了!