我正在尝试使用__DePostBack
调用服务器来更新面板内容,HTTP服务器端被触发但面板不会更新,
更新面板处于自定义服务器控件中,并且不熟悉PAGE上下文,我只能通过使用以下方式访问它:FindControl("Update Panel ID")
,
如何更新“更新”面板?
Default.aspx.cs代码:
protected void Page_Load(object sender, EventArgs e)
{
string _action = this.Request.Params.Get("__EVENTTARGET");
if (_action == "XX")
{
UpdatePanel pnl = ((UpdatePanel)TabControl1.FindControl("UpdatePanel ID"));
UserControl uc = (UserControl)LoadControl("MyForm.ascx");
pnl.ContentTemplateContainer.Controls.Clear();
pnl.ContentTemplateContainer.Controls.Add(uc);
}
}
Default.aspx代码:
<SDMS:TabControl ID="TabControl1" BorderColor="#00F" runat="server" class="tabswrapper">
<TabPages>
<SDMS:TabPage ID="TabPage6" runat="server" UpdateContent="UpdatePanel1" Title="Two">
<TabBody>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<ContentTemplate>
</asp:UpdatePanel>
</TabBody>
</SDMS:TabPage>
</TabPages>
</SDMS:TabControl>
如何更新更新的面板?
答案 0 :(得分:0)
如果您想通过CodeBehind使UpdatePanel更新:
pnl.Update();
您确实需要在完成更改后调用它。 (例如,您在UpdatePanel中添加了一个Button。)
因此,使用您的代码,它应该适用于此:
protected void Page_Load(object sender, EventArgs e)
{
string _action = this.Request.Params.Get("__EVENTTARGET");
if (_action == "XX")
{
UpdatePanel pnl = ((UpdatePanel)TabControl1.FindControl("UpdatePanel ID"));
UserControl uc = (UserControl)LoadControl("MyForm.ascx");
pnl.ContentTemplateContainer.Controls.Clear();
pnl.ContentTemplateContainer.Controls.Add(uc);
pnl.Update();
}
}