代码如下:        TextBox txt = new TextBox();
        txt.ID = i.ToString();
        txt.Text = i.ToString();
        this.Panel1.Controls.Add(txt);
        i++;这段代码如果放在for循环中,页面生成控件成功,数量和我需求的一样
但是,如果我把代码放入button的click事件里面的话
点击第一次,控件生成成功...
第二次,页面刷新,控件还是原来第一个生成的。
之后一样....
求教高手了...
解决马上给分..

解决方案 »

  1.   

    因为你的控件生成时间迟于init事件 
    所以控件必须每次都生成
      

  2.   

    int事件?
    是button的吗?
    不会吧
      

  3.   


    if(!this.IsPostBack)
    {
      for(int i = 0; i < 5;i++)
      {
        System.Web.UI.WebControls.TextBox textBox = this.FindControl(i.ToString()) as    System.Web.UI.WebControls.TextBox;
        if(textBox==null)
        {
            TextBox txt = new TextBox();
            txt.ID = i.ToString();
            txt.Text = i.ToString();
            this.Panel1.Controls.Add(txt);
            textBox = this.FindControl(i.ToString()) as    System.Web.UI.WebControls.TextBox;
        }
        i++;
    textBox.Attributes["OnClick"] = "";//绑定你的事件
      }}
      

  4.   

    每点击一次,页面都要进行load,而每一次点击你的i都是从初始值开始,将i的值保存到session中可以解决
      

  5.   


    if (ViewState["i"]==null) ViewState["i"] =1;
    for (int j=0;j<(int)ViewState["i"];j++)
    {
    TextBox txt = new TextBox();
    txt.ID = j.ToString();
    txt.Text = j.ToString();
    this.Panel1.Controls.Add(txt);
    }
    ViewState["i"]=(int)ViewState["i"]+1;
      

  6.   

    定义个全局静态变量
    不就行了
    或者放在Ispostback里定义
      

  7.   

    页面的init事件之后附加的控件  将不会被页面自动保存所以每次你都要去new 都要去附加而在init之前的事件  pageload 和 button.click事件都还没有触发  一般也没法赋值建议你每次都去new他