protected void Button2_Click(object sender, EventArgs e)
    {
        int num = int.Parse(this.TextBox1.Text);
        for (int i = 0; i < num; i++)
        {
            TextBox t = new TextBox();
            Label l = new Label();
            TextBox tb = new TextBox();
            Label lb = new Label();
            l.Text = "芯片名" + i;
            l.ID = "lbl" + i;
            t.ID = "txt" + i;
            //ViewState["t"] = true;            lb.Text = "芯片数量" + i;
            lb.ID = "lblb" + i;
            tb.ID = "txtb" + i;
          //  ViewState["tb"] = true;
            this.Panel2.Controls.Add(l); this.Panel2.Controls.Add(t);
            this.Panel2.Controls.Add(lb); this.Panel2.Controls.Add(tb);
                   }    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < int.Parse(this.TextBox1.Text); i++)
        {
            TextBox chip = (TextBox)Panel2.FindControl("txt" + i.ToString());
            TextBox chipnum = (TextBox)Panel2.FindControl("lbl" + i.ToString());
            Response.Write(chip.Text);
            Response.Write(chipnum.Text);         
        }
    }
我根据变量生成多个文本框.需要取得新生成的控件的值,提交数据库,

解决方案 »

  1.   

    遍历啊。。findcontrol..都可以找到的。。因为你postback了。。等于是加了。。
      

  2.   

    象楼主这种方式,点击Button2时添加控件,再点击Button3时,添加的控件在页面已经没有了,所以用FindControl是找不到的,只能用Request.Form的方式来取值了。
    如:
    protected void Button3_Click(object sender, EventArgs e) 
        { 
            for (int i = 0; i < int.Parse(this.TextBox1.Text); i++) 
            { 
                string chip = Request.Form("txt" + i.ToString()); 
                string chipnum = Request.Form("lbl" + i.ToString()); 
                Response.Write(chip); 
                Response.Write(chipnum);        
            } 
      

  3.   

    对呀. 我一提交页面就清空了.      用Request.Form 这个.是不是麻烦了点.?
      

  4.   

    麻烦?
    比如你去FindControl,效率还高一点呢
    更何况你的办法只能用Request.Form
    除非你在Button3里再创建一遍这个动态控件,但是值就丢了。