首先,我想在Button_Click事件中动态生成几个控件,然后取值,但是只要页面回发,控件就消失了。我想要的就是让他们不消失,然后还能去值。
    其次,现在实例化一下问题,页面上有1个panel,3个button,
    1:我点击button1的时候产生3个textbox,
    2:我点击button2的时候3个textbox依然屹立在那儿(不做处理的情况是他们会消失,至于为什么就不解释了,我也明白)
    3:我点击button3的时候能去到3个textbox中用户输入的值
   最后,问题的重点在于如何让那些控件不消失,我知道的方法是在viewstate中记录他们,然后在page_oninit的时候重新产生,但是我试了很多次都不行。至于如何产生控件和取值,如果没有特殊的做法就可以忽略了,
  希望高手给出个方案来,然后说下原理,我的目的是学习,不是交差,谢谢了!最先答对的给60%的分
   

解决方案 »

  1.   

    我知道的方法是在viewstate中记录他们,然后在page_oninit的时候重新产生,但是我试了很多次都不行
    ========>可以的,如果不行,请贴出你的代码
      

  2.   

    http://topic.csdn.net/u/20080919/13/e4c22124-4a52-4e92-a06f-9d353be196b9.html 
      

  3.   

    解决了,给分咯  <asp:HiddenField ID="hi" runat="server" />protected override void OnInit(EventArgs e)
        {
            string  = Request.Form[hi.UniqueID];
            if ( != string.Empty)
            {
                if (Page.IsPostBack)
                {
                    CreateTextBox(5, "0");
                }
            }
        }  protected void Button1_Click(object sender, EventArgs e)
        {
            CreateTextBox(5,"0");
            hi.Value = "0";
        } protected void Button2_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 5; i++)
            {
                Response.Write(((TextBox)p1.FindControl("textbox"+i.ToString())).Text);
            }
        }/// <summary>
        /// 创建TextBox
        /// </summary>
        /// <param name="count">数量</param>
        /// <param name="">标识</param>
        private void CreateTextBox(int count,string )
        {
            for(int i=0;i <count;i++)
            { 
                TextBox textbox=new TextBox(); 
                textbox.Visible=true; 
                textbox.ID="textbox"+i.ToString();
                textbox.AutoPostBack = true;
                textbox.TextChanged+=new EventHandler(textbox_TextChanged);
                p1.Controls.Add(textbox); 
            } 
        }