2014-10-09 32 views
0

我有一个占位符的控制和选择用户控件,并将其添加到占位符.aspx页上下拉:添加和在运行时删除用户控件,在选择前面的控制应该被覆盖

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); 

     } 

那么第一个用户控制应通过覆盖这个新的用户控件(老年人应该从页面中消失)。如果我做

​​

在下拉列表中选择的指数变化,然后添加新的用户控件,然后当新的控件添加到占位符,我得到一个索引超出边界错误。

我该如何去做到这一点? 如果需要更多信息,请让我知道。

回答

0

您可以使用Controls.Clear()第一:

placeholder.Controls.Clear(); 
placeholder.Controls.Add(UC); 

不能使用Remove(UC)因为这是试图以去除尚未添加新的用户控件。

+0

我尝试使用clear()也得到了相同的结果。 – Netnetter 2014-10-09 15:27:30

+0

@ Netnetter:你在哪里重新创建回发控件?你必须在'Page_Init'或者(Page_Load'中的(最新)中做到这一点。然后将新控件添加到DropDownList的'SelectedIndexChanged'事件中。 – 2014-10-09 15:29:19

+0

Am在Page_Load上做它,它在页面加载=>选择的索引更改=> clear()=> add() – Netnetter 2014-10-09 15:32:05