2009-09-15 86 views
0

我有一个UpdatePanel,并在其中一个普通的面板。在Panel中,我动态添加简单的UserControls。用户控件有一个按钮和一个标签。当我点击一个控件中的按钮时,它将删除我已动态添加的面板中的所有控件。 任何人都可以帮忙吗?事件问题C#.NET UserControl

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

您应该为您添加控件的位置以及按钮的Click事件的事件处理程序发布代码。 – 2009-09-15 13:55:39

回答

0

您说您正在动态添加用户控件。你是否有这样的代码:

void Page_Load(...)  
{ 
    if (!IsPostback) 
     // AddUserControl here. 
} 

你需要每一个要求,也回送过程中添加的用户控件,因为它不会被保存在已修改的控制树中的视图状态。

0

你有问题,你没有重新创建(例如在Page_Load)动态添加控制。 确保在IsPostBack上重新创建控件