我有以下功能,通过在 default.aspx 中的占位符中添加/加载 ascx 自定义用户控件来更新 UpdatePanel 内容:
protected void NavigationTab_Click(string ascxpath)
{
Control ctrl = LoadControl(ascxpath);
//cphmaincontent is my asp ContenPlaceHoderId in masterpage
PlaceHolder phmaincontent = (PlaceHolder)cphmaincontent.FindControl("phmaincontent");
phmaincontent.Controls.Clear();
phmaincontent.Controls.Add(ctrl);
upmaincontent.Update();
}
母版页更新面板:
<asp:UpdatePanel ID="upmaincontent" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lbmsg" runat="server" Text=""></asp:Label>
<asp:ContentPlaceHolder ID="cphmaincontent" runat="server">
</asp:ContentPlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
我从另一个自定义 ascx 控件的导航控件中调用 NavigationTab_Click,当我单击按钮时,我的 ctrl Control 对象在每个控件上动态加载,它具有按钮和标签,它只是将一些文本重新分配给标签。
我的母版页上有以下代码,只是为了获取 ascx 控制路径:
protected override void OnInit(EventArgs e)
{
//raising an event to set ascx path
mainmenu.NavigatePath += new usercontrols.mainmenu.NavigationHandler(NavigationTab_Click);
base.OnInit(e);
}
到目前为止一切正常,通过调用 NavigationTab_Click 函数加载我的 ctrl 对象后,我在占位符中看到了我的 ctrl,并且有按钮和标签,但问题是,如果我单击此按钮,它应该将标签重新分配给一些文本,而不是整个 ctrl 控件内容消失,请帮忙。