我有一个UpdatePanel,里面有一个常规的Panel。在Panel中我动态添加简单的UserControls。 Usercontrol有一个Button和一个Label。当我单击控件中的按钮时,它会删除我动态添加的面板中的所有控件。 有人可以帮忙吗?
int controlID = 0;
List<Control> cc = new List<Control>();
if (Session["ControlsCompleted"] != null)
{
cc = Session["ControlsCompleted"] as List<Control>;
for (int i = 0; i < cc.Count; i++)
{
pnlCompletedEducation.Controls.Add(cc[i]);
}
controlID = cc.Count;
}
Controls_TestWebUserControl ct = LoadControl(@"Controls\TestWebUserControl.ascx") as Controls_TestWebUserControl;
ct.ID = controlID.ToString();
cc.Add(ct);
ct.EnableViewState = true;
pnlCompletedEducation.Controls.Add(ct);
txtInstitutionName.Text = controlID.ToString();
List<Control> lc = new List<Control>();
for (int i = 0; i < pnlCompletedEducation.Controls.Count; i++)
{
lc.Add(pnlCompletedEducation.Controls[i]);
}
Session["ControlsCompleted"] = lc;
这是我将控件添加到面板的方法。我不得不把它们留在某个地方,而我无法用ViewState来做,所以我使用了Session,这是一个坏主意。
答案 0 :(得分:0)
您没有重新创建的问题(例如在Page_Load中)动态添加控件。 确保在IsPostBack上重新创建控件
答案 1 :(得分:0)
您说您正在动态添加用户控件。你有这样的代码:
void Page_Load(...)
{
if (!IsPostback)
// AddUserControl here.
}
您需要在每个请求期间添加用户控件,也需要回发,因为它不会存储在您修改控制树的视图状态中。