就像这个主题一样,我在通过按钮上的事件创建文本框时遇到问题,然后在重新加载后丢失了文本框中的值。
我的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["numberOfCountry"] = null;
}
}
protected void BtnAddAnotherCountry(object sender, EventArgs e)
{
int i = 1;
Session["numberOfCountry"] = Convert.ToInt32(Session["numberOfCountry"]) + i;
}
protected override void OnPreRender(EventArgs e)
{
for (int i = 1; i <= Convert.ToInt32(Session["numberOfCountry"]); i++)
{
TextBox tb = new TextBox();
tb.ID = "CountryNext" + i;
pnlAnotherTxtbox.Controls.Add(tb);
}
base.OnPreRender(e);
}
有什么建议吗?我还尝试在页面加载中创建循环,但它在第二次重新加载页面后创建我的文本框,因为第一个事件是页面重新加载,然后是按钮。
为什么大家总是在鬼混OnPreRender
, Page_Init
, OnPreLoad
当谈到动态控制时。那根本不需要。
只需将它们添加到Page_load
并且它们的值将被保留。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
for (int i = 1; i <= Convert.ToInt32(Session["numberOfCountry"]); i++)
{
addControl(i);
}
}
else
{
Session["numberOfCountry"] = "0";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(Session["numberOfCountry"]) + 1;
Session["numberOfCountry"] = i;
addControl(i);
}
private void addControl(int index)
{
TextBox tb = new TextBox();
tb.ID = "CountryNext" + index;
PlaceHolder1.Controls.Add(tb);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)