2010-08-27 41 views
0

我使用C#代碼在選項卡控件中添加了ascx控件。如果你點擊任何標籤。 ASCX控制負載。選項卡控件在更新窗格中。阿洛斯ASCX控制包括按鈕,如果你點擊按鈕,你可以添加一些價值的數據庫,但ASCX消失。我認爲它被重新加載。我如何解決它? 如果我點擊標籤控件,我加載了ascx控件。我在ASCX上有一個按鈕。我點擊按鈕ASCX即消失..如果點擊按鈕保存,ASCx爲什麼會消失?



    protected void ASPxPageControl1_ActiveTabChanged(object source, 
     DevExpress.Web.ASPxTabControl.TabControlEventArgs e) 
    { 

     if (ASPxPageControl1.ActiveTabPage.Name == "Ali Sp. Reqs") 
       PhAliSpReqs.Controls.Add(UserControlHelper.LoadControl(this.Page, "~/EngWebUserControl/AliSpReqs.ascx")); 
     else if (ASPxPageControl1.ActiveTabPage.Name == "Test") 
       PhTest.Controls.Add(UserControlHelper.LoadControl(this.Page, "~/EngWebUserControl/Test.ascx")); 

ASCX:

public partial class Test : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    public void Button1_Click(object sender, EventArgs e) 
    { 
     if (txtTest.Text != String.Empty) 
     { 
      Label1.Text = "Hello!"; 
     } 
     else 
      Label1.Text = "Error"; 
    } 
} 

如果我點擊選項卡,任何東西都不錯。但點擊ascx上的按鈕。 ASCx控制消失。我該如何解決它!

回答

1

如果你在代碼中以編程方式添加控件,每次回來後的操作需要(如在Page_Load中)重新創建相同的控制處理後回事件(在你的情況下,保存按鈕)

+0

我重新編號。如何解決它。請幫幫我!!! – Penguen 2010-08-27 10:27:30

+0

在您的代碼中,僅在ActiveTabChanged上調用LoadControl()才能添加該控件。但這些信息無法在回傳中生存。 – devio 2010-08-27 12:07:27

0

動態添加的控件在代碼隱藏類中沒有對象引用變量。它們只出現在包含控件的控件集合中,即Page.Controls集合中。當頁面由於用戶交互而回發到服務器時,實例化codebehind類的新實例,並且該類的所有變量都使用ViewState中的值進行設置。看到here

+0

我不明白? – Penguen 2010-08-27 08:19:56

+0

看到編輯後 – 2010-08-27 08:58:22

+0

不,我沒有.... – Penguen 2010-08-27 10:05:10