0

サーバーへの呼び出しを使用してパネルのコンテンツを更新しようとして__DePostBackいます。HTTP サーバー側が起動されますが、パネルは更新されません。

FindControl("Update Panel ID")更新パネルはカスタム サーバー コントロールにあり、PAGE コンテキストに慣れていないため、次を使用しないとアクセスできません。

更新パネルを更新するにはどうすればよいですか?

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>

更新されたパネルを更新するにはどうすればよいですか?

4

1 に答える 1

0

UpdatePanel を CodeBehind で更新する場合は、次を使用します。

pnl.Update();

変更を行った後に必ず呼び出す必要があります。(たとえば、ボタンを UpdatePanel に追加しました。)

したがって、あなたのコードでは、これで動作するはずです:

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();
    }
}
于 2013-10-23T14:25:47.957 に答える