web-dev-qa-db-fra.com

Comment forcer le post-retour complet à partir d'un bouton dans un UpdatePanel?

Comment forcer le post-retour complet à partir d'un bouton dans un UpdatePanel?

67
André Pena

Vous pouvez utiliser la propriété Triggers de UpdatePanel pour enregistrer les actions qui déclenchent une publication complète.

Ajoutez un PostBackTrigger object à cette propriété, contenant le ControlID du contrôle devant déclencher une publication complète.

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

J'ajoute simplement ceci parce que personne d'autre ne l'a. Il est possible de faire cela dans code-behind dans une ligne de code sans aucune des méthodes précédentes. Il suffit de mettre ceci dans page_load:

Visual Basic

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)

C #

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

De ici :

Utilisez le contrôle PostBackTrigger pour permettre aux contrôles d'un UpdatePanel de générer une publication au lieu d'effectuer une publication asynchrone.

 <Triggers>
    <asp:PostBackTrigger ControlID="controlID" />
 </Triggers>
12
Aseem Gautam

J'ai eu le même problème en utilisant un ImageButton à l'intérieur d'un WebDataGrid.

Je mets plutôt la ligne de EvilDr dans le pré-rendu pour la webdatagrid. A bien fonctionné!

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

C'est une vieille question, il y a une approche un peu délicate aussi, quand tout est dans panneaux de mise à jour et que vous voulez faire un post complet pour que votre Document.Ready code fonctionne au clic.

1. Créez un bouton factice en dehors du panneau de mise à jour et cliquez dessus à partir du code situé derrière, comme ceci 

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

2. Définit la fonction sur le devant comme ceci

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

NOTE: Mais le meilleur moyen est d'utiliser trigger, la réponse publiée par @Thibault Falise :)

0
Ajmal Jamil