![](/img/trans.png)
[英]Problems maintaining a custom control's (ascx) states between postbacks when loading said ascx control in page_load
[英]UpdatePanel not working in ascx control if is added on Page_Load
我有一個ascx控件,正在將它加載到母版頁的Page_Load()上,在我的ascx控件中,我有我的asp UpdatePanel。
在母版頁中加載ascx:
protected void Page_Load(object sender, EventArgs e)
{
usercontrols.mainmenu adminmenu = (usercontrols.mainmenu)LoadControl("~/mymenupath.ascx");
//phmainmanu is a placeholder in masterpage
phmainmanu.Controls.Add(adminmenu);
}
問題是這樣的:如果我以這種方式加載用戶控件,則主頁中的UpdatePanel無法正常工作,但是如果我在主頁中添加注冊標簽作為下面的代碼,並以這種方式導入ascx,則UpdatePanel可以正常工作。
<%@ Register Src="~/admin/usercontrols/contentexplorer.ascx" TagName="Tree" TagPrefix="NAV" %>
<NAV:Tree ID="treenav" runat="server" />
我假設我可能需要在不同的頁面生命周期事件中加載控件,我確實嘗試過Page_Init,但沒有用,請幫忙。
如前所述,PreInit在母版頁中不存在。 但是,這不是必需的。 只需確保將UserControl添加為UpdatePanel的ContentTemplateContainer的子控件即可:
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1 ctrl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl);
}
希望能幫助到你!
我不確定當您說“不起作用”(什么不起作用?)時是什么意思,但是請記住在將控件添加到“控件”列表之前設置控件的ID,否則事件可能無法正確執行:
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1 ctrl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
ctrl.ID = "controlId";
UpdatePanel1.ContentTemplateContainer.Controls.Add(ctrl);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.