2009-09-15 78 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上重新創建控件