【发布时间】:2014-02-19 13:49:54
【问题描述】:
我有一个 asp.net 站点和一个添加到页面的用户控件。 然后我还有一个按钮,一旦点击,它就会向页面添加第二个用户控件。
protected void btnAdd_Click(object sender, EventArgs e)
{
Metric newControl = (Metric)LoadControl("~/Metric.ascx");
Random rnd = new Random();
newControl.ID = "id" + rnd.Next();
placeholder.Controls.Add(newControl);
}
问题是每个用户控件都有一个下拉列表,这会导致回发,因此当这种情况发生时,使用 btnAdd 按钮添加的用户控件不再存在。
我明白这是因为它只在调用 btnAdd_Click 方法时才存在,那么我该如何克服呢?
【问题讨论】:
-
使用与以前相同的 ID 在
Page_Init或Page_Load(最迟)中重新创建它们。因此,您需要保留已创建控件的数量,例如在ViewState中。 4guysfromrolla.com/articles/092904-1.aspx -
此链接可以帮助stackoverflow.com/questions/682269/… ,在这种情况下,您必须维护创建或未创建的用户控件的状态......才能在页面加载时重新加载它。这只是一个想法
标签: c# asp.net postback code-behind autopostback