How do I force full post-back from a button within an UpdatePanel?

C#.Netasp.netasp.net Ajax

C# Problem Overview


How do I force full post-back from a button within an UpdatePanel?

C# Solutions


Solution 1 - C#

You can use the Triggers property of the UpdatePanel to register actions that trigger a full postback.

Add a PostBackTrigger object to that property, containig the ControlID of the control which needs to trigger a full postback.

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        ...
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="myFullPostBackControlID" />
    </Triggers>
</asp:UpdatePanel>

Solution 2 - C#

Just adding this because nobody else has. It is possible to do this in code-behind in one line of code without any of the above methods. Just put this in page_load:

Visual Basic

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)

C#

ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);

Solution 3 - C#

From here:

Use the PostBackTrigger control to enable controls inside an UpdatePanel to cause a postback instead of performing an asynchronous postback.

 <Triggers>
    <asp:PostBackTrigger ControlID="controlID" />
 </Triggers>

Solution 4 - C#

I had the same problem using an ImageButton inside a WebDataGrid.

I put the Line from EvilDr inside the preRender for the webdatagrid instead. Worked great!

for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
   ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}

Solution 5 - C#

Its an old question there is bit tricky approach as well, when everything is in update panels and you want to do full post back so that your Document.Ready code works on click.

1. Create a dummy button outside the update panel and click it from code behind like this

ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);

2. Define the function on front end like this

function ResetDocumentReady() {
        $("[id$=DummyButton]").click();
    }

NOTE: But the best way is using trigger, the answer posted by @Thibault Falise :)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndre PenaView Question on Stackoverflow
Solution 1 - C#Thibault FaliseView Answer on Stackoverflow
Solution 2 - C#EvilDrView Answer on Stackoverflow
Solution 3 - C#Aseem GautamView Answer on Stackoverflow
Solution 4 - C#OysteinView Answer on Stackoverflow
Solution 5 - C#Ajmal JamilView Answer on Stackoverflow