我试图在运行时将用户控件添加到div中。我可以添加控件no probelem但它会覆盖之前添加的控件。
基本上,我正在尝试将乘客添加到旅行系统中 - 乘客的详细信息在用户控制之下,我事先并不知道会有多少乘客。我有一个新的乘客按钮,它应该将新用户控件添加到div中,而不会覆盖前一位乘客。
代码是c#/。net 4.
我试图将控制数据保存到viewstate中并重新添加新的控件数据,但这也不起作用。这是我正在使用的代码片段
foreach (Control uc in p_passengers.Controls) {
Passenger p = uc as Passenger;
if (p != null) {
p.SaveValues();
}
}
然而,p.SaveAs()(只是将控制值写入ViewState)永远不会被命中。
我确定它只是一些愚蠢但有任何想法?
干杯。
答案 0 :(得分:3)
你是re-creating all of your dynamic controls for every postback吗?
请记住,每个回发都是Page类的新实例,您之前创建的所有控件都需要显式重新创建。
<强>更新强>
如果你在viewstate中有一个已添加项目的列表,就像这样..
private List<string> Items
{
get
{
return ViewState["Items"] = (ViewState["Items"] ?? new List<string>());
}
}
然后在您的点击处理程序中,您只需添加到此列表:
private void btn_Click(object sender, EventArgs e)
{
this.Items.Add("Another Item");
}
protected overrides CreateChildControls()
{
foreach (string item in this.Items)
{
Passanger p = new Passenger();
p.Something = item;
this.p_passengers.Controls.Add(p);
}
}