动态加载控件的状态问题
问题描述:
我遇到了我的动态加载控件事件的问题。动态加载控件的状态问题
这里是我正在加载控件:
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
答
请仅在页面不回发时加载控件。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadSubPageEditTemplate();
}
}
+0
这不起作用,当用户控件的回发触发时,它需要从页面再次添加。如果我只添加它!回发后,控制消失。 – tribe84 2011-02-16 06:23:24
您是否试图调用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