繁体   English   中英

服务器控件中的“更新”面板

[英]Update panel inside Server Control

我正在尝试通过使用对服务器的__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>

如何使已更新的面板得以更新?

如果要使UpdatePanel通过CodeBehind获得更新,请使用:

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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM