Wie erzwinge ich ein vollständiges Post-Back von einer Schaltfläche in einem UpdatePanel?
Wie erzwinge ich ein vollständiges Post-Back von einer Schaltfläche in einem UpdatePanel?
Antworten:
Mit der Triggers- Eigenschaft des UpdatePanel können Sie Aktionen registrieren, die ein vollständiges Postback auslösen.
Fügen Sie dieser Eigenschaft ein PostBackTrigger- Objekt hinzu, das die ControlID des Steuerelements enthält, das ein vollständiges Postback auslösen muss.
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="myFullPostBackControlID" />
</Triggers>
</asp:UpdatePanel>
Fügen Sie dies einfach hinzu, weil es sonst niemand hat. Es ist möglich, dies in Code-Behind in einer Codezeile ohne eine der oben genannten Methoden durchzuführen. Fügen Sie dies einfach in page_load ein:
Visual Basic
ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)
C #
ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
this
oderpage
Von hier aus :
Verwenden Sie das PostBackTrigger-Steuerelement, um zu aktivieren, dass Steuerelemente in einem UpdatePanel ein Postback verursachen, anstatt ein asynchrones Postback durchzuführen.
<Triggers>
<asp:PostBackTrigger ControlID="controlID" />
</Triggers>
Ich hatte das gleiche Problem mit einem ImageButton in einem WebDataGrid.
Ich habe stattdessen die Zeile von EvilDr in den preRender für das Webdatagrid eingefügt. Hat super funktioniert!
for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}
Es ist eine alte Frage, es gibt auch einen etwas kniffligen Ansatz, wenn sich alles in Update-Panels befindet und Sie einen vollständigen Beitrag zurückschicken möchten, damit Ihr Document.Ready- Code beim Klicken funktioniert.
1. Erstellen Sie eine Dummy-Schaltfläche außerhalb des Update-Fensters und klicken Sie auf den Code dahinter
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);
2. Definieren Sie die Funktion am Frontend folgendermaßen
function ResetDocumentReady() {
$("[id$=DummyButton]").click();
}
HINWEIS: Am besten verwenden Sie jedoch den Trigger, die Antwort von @Thibault Falise :)