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