动态加载控件的状态问题

动态加载控件的状态问题

问题描述:

我遇到了我的动态加载控件事件的问题。动态加载控件的状态问题

这里是我正在加载控件:

protected void Page_Load(object sender, EventArgs e) 
{ 
    LoadSubPageEditTemplate(); 
} 

protected void LoadSubPageEditTemplate() 
{ 
     pnlPageTemplate.Controls.Clear(); 
     BaseOfferAdmin adminControl = (BaseOfferAdmin)this.LoadControl("~/Controls/SingleOfferAdmin.ascx");       
     if (adminControl != null) 
     { 
      adminControl.ID = "Control_ID" 
      pnlPageTemplate.Controls.Add(adminControl); 
     } 
    } 
} 

的LoadSubPageEditTemplate()也从页面上的一个按钮触发的事件,因为我有按钮事件已被执行之后更新它。

控制加载完美,我已经测试了它与一个基本的按钮和回发火灾如预期。不过,我用CheckBox得到奇怪的结果。

<asp:CheckBox runat="server" ID="cbOptionalAction" Text="CheckBox" AutoPostBack="true" OnCheckedChanged="cbOptionalAction_CheckChanged" /> 

CheckedChanged事件只在复选框被选中时触发,我猜这意味着我的控件viewstate存在一些问题。如果我在页面上有多个复选框,并且创建了一个回发,则checkchanged的每个复选框都将触发checkchanged事件。

谢谢任何​​人抽出一点时间帮助我!

Ignus

+0

您是否试图调用LoadSubPageEditTemplate();在Page_Init事件而不是Page_Load? Page_Init将被认为是生成动态控件的最佳位置。您可能会发现这篇相关文章有帮助:http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx – kaushalparik27 2015-09-09 17:38:55

请仅在页面不回发时加载控件。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
     {   
      LoadSubPageEditTemplate(); 
     } 
} 
+0

这不起作用,当用户控件的回发触发时,它需要从页面再次添加。如果我只添加它!回发后,控制消失。 – tribe84 2011-02-16 06:23:24