TextBoxid和TextBoxname都是模板列里的TextBox,在后台写了如下语句TextBox tbId = this.form1.FindControl("TextBoxid") as TextBox;
TextBox tbName = this.form1.FindControl("TextBoxname") as TextBox;
string id = tbId.Text.ToString();//该句报错
string name = tbName.Text;第三行语句报错未将对象引用设置到对象的实例
请问各位,这个错误该怎么改呢?

解决方案 »

  1.   

    这样试试
    TextBox tbId = new TextBox();
    TextBox tbName = new TextBox();
    tbId  = this.form1.FindControl("TextBoxid") as TextBox;
    tbName = this.form1.FindControl("TextBoxname") as TextBox;
    string id = tbId.Text.ToString();//该句报错
    string name = tbName.Text;
    可能是没找到名为TextBoxid的TextBox控件,所以tbId未实例化,
      

  2.   

    没有进行非空判断, tbId.Text 可能为空,做个判断!
      

  3.   

    你的模板列在什么里?肯定得有个容器吧?如果你放到gridview或者是repeater里,你那样肯定是找不到控件的。在什么容器里边就从什么容器里边查找.
      

  4.   

    FindControl 这个没有取到值 他是null 
    所以下边报错了 
    你可以判断是否为null 
      

  5.   

    C# codeTextBox tbId = this.form1.FindControl("TextBoxid") as TextBox;
    TextBox tbName = this.form1.FindControl("TextBoxname") as TextBox;
    string id = tbId.Text.ToString();//该句报错
    string name = tbName.Text;tbId.Text.ToString(); 确定这个有值吗?
      

  6.   

    谢谢大家,是因为FindControl 这个没有取到值。
    因为TextBoxname在GridView1的FooterTemplate里面,所以应该按照下面的方式找到控件。
    TextBox tbName = GridView1.FooterRow.FindControl("TextBoxname") as TextBox;