C# 在运行时添加和删除用户控件,选择时应覆盖上一个控件
我在.aspx页面上有一个占位符控件和一个下拉列表,用于选择用户控件并将其添加到占位符:C# 在运行时添加和删除用户控件,选择时应覆盖上一个控件,c#,asp.net,C#,Asp.net,我在.aspx页面上有一个占位符控件和一个下拉列表,用于选择用户控件并将其添加到占位符: if (dropdown.SelectedValue == "1") { UserControl UC = (UserControl)LoadControl("usercontrolpath"); placeholder.Controls.Add(UC); } 我对该用户控件执行所有操作(通过在每次回发时重新创建),现在我
if (dropdown.SelectedValue == "1")
{
UserControl UC = (UserControl)LoadControl("usercontrolpath");
placeholder.Controls.Add(UC);
}
我对该用户控件执行所有操作(通过在每次回发时重新创建),现在我希望当用户从下拉列表中选择其他选项时,比如:
if (dropdown.SelectedValue == "2")
{
UserControl UC = (UserControl)LoadControl("Newusercontrolpath");
placeholder.Controls.Add(UC);
}
然后第一个用户控件应该被这个新的用户控件覆盖(旧的用户控件应该从页面消失)。如果我这样做
在下拉列表中选定的索引更改处,然后添加新的用户控件,然后在将新控件添加到占位符时,我将得到一个索引越界错误
我如何才能做到这一点?
如果需要更多信息,请告诉我。您可以先使用:
您不能使用
Remove(UC)
,因为它试图删除尚未添加的新用户控件。@Netnetter:回发时在哪里重新创建控件?您必须在Page\u Init
或Page\u Load
中(最新)执行此操作。然后在DropDownList
的SelectedIndexChanged
事件中添加新控件。我在页面加载时执行此操作,就像在页面加载时重新创建=>SelectedIndexChanged=>clear()=>add()@Netnetter:我很困惑,因为控件都不存在。清除或控件。移除即使控件不存在也会引发该异常。因此,原因必须是您没有显示的其他地方。错误不是在Clear()或Remove()处抛出,而是在Clear()或Remove()成功执行后,在新用户控件的Add()处抛出。
placeholder.Controls.remove(UC);
placeholder.Controls.Clear();
placeholder.Controls.Add(UC);