日期:2014-05-19  浏览次数:20528 次

如何删除动态生成的控件
for(int   i=0;i <this.DropDownLists_list1.Count;i++)
{
      //初始化具体类别的dropdownlist
    string   FirstListID   =   this.DropDownLists_list1[i].ToString();
    DropDownList   tmp1   =   new     DropDownList();
    tmp1.ID   =   FirstListID;
 
    tmp1.Items.Insert(0, "aa ");      
    tmp1.Items.Insert(1, "bb ");
    tmp1.Items.Insert(2, "cc ");
    PlaceHolder1.Controls.Add(tmp1);
    tmp1.SelectedIndex   =   ((DropDownList)Page.FindControl(FirstListID)).SelectedIndex;

    。
    。
    。
    。

我在Page_Load()中这样动态生成了几个dropdownlist,DropDownLists_list1这个是个数组,用来保存控件id的,现在就是如何删除我指定那个动态生成的那个控件,我的做法是删除那个数组里面的控件的id,可是asp.net里面的执行顺序是先Page_Load,再执行我删除button下面的函数的,就是删除那个数组里面的控件的id,所以在页面上显示不出来,需要再次提交页面,小弟我就不知道如何做了??

------解决方案--------------------
在page_load中根据条件来判断是否生成控件:

if (created)
{
生成控件;
}
------解决方案--------------------
page_load

if(!Page.IsPostBack)
{
你生成控件的代码
}

删除的时候,可以

Page.Controls.Remove(Page.Controls[ " "]);