我在GridView1_DataBound事件中编写如下代码,他说我没将对象实例化,如何解决??
TextBox tb=(TextBox)GridView1.FindControl("TextBox1");
Response.Write(tb.Text);
或者有什么好的方法去获取GridView1里面TextBox控件的值?

解决方案 »

  1.   

    TextBox tb=(TextBox)GridView1.Rows[e.Item.ItemIndex].FindControl("TextBox1"); 
      

  2.   

    错了,试试:
    TextBox tb=(TextBox)e.Row.FindControl("TextBox1");
      

  3.   

    如果你有N行数据,GridView_RowDataBound就会被调用N次(实际上比N次多几次)。if (e.Row.RowType == DataControlRowType.DataRow)
    {
       TextBox tb = e.Row.FindControl("TextBox1") as TextBox;}
      

  4.   

    回复1楼2楼: 问题是我按了e之后不出Item,Row
      

  5.   

    或者:
    TextBox tb=(TextBox)GridView1.Rows[e.Row.RowIndex].FindControl("TextBox1"); 
      

  6.   

      protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowIndex != -1)
                {
                    TextBox txt=e.Row.FindControl("TextBox1")  as TextBox;                    }
            }
      

  7.   

    应该用RowDataBound事件,像下面这样写 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    TextBox tb = (TextBox)e.Row.FindControl("TextBox1");
                }
            }
      

  8.   

    把TextBox1转成模板
    就可以直接在
    TextBox txt= gv.FindControl("") as TextBox