动态生成出来的textbox根据id获取不到值,用什么办法可以获取呀?

解决方案 »

  1.   

    需要从TextBox所在的容器内取。比如:放在GridView中就需要gridView1.FindControl(id) as TextBox
    其次,注意获取的时候是否经过了什么动作,页面回发等问题。
      

  2.   

    是的
    TextBox tb=GridView1.FindControl(id) as TextBox;
    if(tb!=null)
    {
      string text=tb.Text;
    }
      

  3.   

    用个比较不给力的方法,给gridview的主div加上一个div_onclick("<%#id%>")事件,onclick事件传入的参数为image的id,再<script>var i=0 function div_conclick(a){var b=document.getElementById(a); if(i%2==0) b.src="图片地址1"; else b.scr="图片地址2"; i=i+1;}
      

  4.   

    你把div 设成runat=“server”,你再看看打开网页再看页面代码,你会发现ID的规律的
      

  5.   

      for(int i =0 ;i<gridView1.rows.Count;i++)
    {
       TextBox  tbx1 =(TextBox) GridView1.FindControl(id);
       //这里写逻辑
    }
      

  6.   

    上一篇错了
    for(int i =0 ;i<gridView1.rows.Count;i++)
    {
      TextBox tbx1 =(TextBox) GridView1.Rows[i].FindControl(id);
      //这里写逻辑
    }
      

  7.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //e.Row.Cells[0].Text = ((TStudent)e.Row.DataItem).Id.ToString();
                //e.Row.Cells[1].Text = ((TStudent)e.Row.DataItem).Name.ToString();
               // e.Row.Cells[2].Text = ((TStudent)e.Row.DataItem).Age.ToString();
                TextBox txt1 = e.Row.FindControl("txtID") as TextBox;
               
            }
        }
      

  8.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[3].Text = Convert.ToDateTime(e.Row.Cells[3].Text).ToShortDateString();
            }
        }
    e.Row.RowType  是指当前行的类型
    DataControlRowType 是GridView的行的类型集合  其中的DataRow是数据绑定行这个判断语句的意思就是判断当前行是不是数据绑定行是绑定时候用来过滤标题行和序号行等等非数据绑定行的其中的3只是随机写的,真实的应该是你要查询的那个textBox所在的列号
      

  9.   

    http://download.csdn.net/source/1795477这里有例子
      

  10.   

    http://download.csdn.net/source/1795477这个
      

  11.   

    如果生成的textbox放入PlaceHolder控件里,直接用ID可以获取
    如果直接放在form,用Request[name]取值
      

  12.   

    int id = Convert.ToInt32(((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text);试试看,cells[0]这个根据位置而定
      

  13.   

    都是在这里说嘴,人家是动态生成的TextBox,然后把TextBox里面的数据修改了以后,要在后台更新数据库的。
    因为是动态生成的TextBox,所以每次更新时,都很重新加载生成TextBox的函数部分。
    TextBox里面的数值还是最开始初始化的值。得不到更新后的
      

  14.   

    ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text
      

  15.   

    如果是后台更新数据库后的数据,就应该在提交texbox的更新后的值的时候刷新GridView重新绑定啊。
    要不然计算机怎么判断,即使后台取到值了没重新绑定当然没法判断新ID了
      

  16.   

    说的有道理,把数据加个for循环就行了