Jak wymusić pełne odroczenie od przycisku w ramach UpdatePanel?Jak wymusić pełne odroczenie od przycisku w ramach UpdatePanel?
Odpowiedz
Możesz użyć właściwości Triggers UpdatePanel, aby zarejestrować akcje, które wywołają pełny odświeżenie.
Dodaj obiekt PostBackTrigger do tej właściwości, zawierający ControlID formantu, który musi wywołać pełny odświeżenie.
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="myFullPostBackControlID" />
</Triggers>
</asp:UpdatePanel>
Od here:
Regulatorem PostBackTrigger celu umożliwienia kontroli wewnątrz UpdatePanel powoduje odświeżenie strony zamiast wykonywania asynchronicznego odświeżenie strony.
<Triggers>
<asp:PostBackTrigger ControlID="controlID" />
</Triggers>
+1 - Zbyt szybko @Aseem! – dugas
Hmm tak, ale nie zadziała, jeśli w tym UpdatePanel masz na przykład GridView z numerami stron. Przejdź na nową stronę, a wyzwalacze przestają działać. – Fandango68
Po prostu to dodam, ponieważ nikt inny nie ma. Można to zrobić z opóźnieniem kodu w jednym wierszu kodu bez żadnej z powyższych metod. Wystarczy umieścić to w page_load:
Visual Basic
ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)
C#
ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
Bardzo ładne, po godzinach poszukiwań wreszcie rozwiązanie, które działa. Problem polegał na tym, że wszystkie moje kontrolki (panel aktualizacji i przycisk) były tworzone w kodzie, więc nie można było ustawić funkcji postbacktrigger. Dzięki! – OverMars
Powinieneś być w stanie.Po utworzeniu kontroli można użyć AddHandler do utworzenia wyzwalacza do podprogramu – EvilDr
Absolutnie w porządku, jest tak prosty i właśnie tam jestem prawie zakłopotany, nigdy nie przyszło mi to do głowy. Bardzo miło .. – OverMars
miałem ten sam problem przy użyciu ImageButton wewnątrz WebDataGrid.
Zamiast tego wstawiłem linię od EvilDr wewnątrz preRender dla webdatagrid. Pracował świetnie!
for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}
Jego stary pytanie jest trochę skomplikowane podejście, jak również, gdy wszystko jest w paneli aktualizacji i chcesz zrobić cały post z powrotem tak, że document.ready kod działa na kliknięcie.
1. Tworzenie obojętne przycisk poza panelu aktualizacji i kliknij go z kodu za jak to
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);
2. Zdefiniuj funkcję na przednim końcu tak
function ResetDocumentReady() {
$("[id$=DummyButton]").click();
}
UWAGA: Najlepszym sposobem jest użycie wyzwalacza, odpowiedź wysłana przez @Thibault Falise :)
Mam Infragistics UltraWebGrid z kolumną składającą się z przycisków. Miałem problem z kliknięciem przycisków, które uruchamiałyby ich programy obsługi zdarzeń, które z kolei odświeżyłyby sieć, ale siatka nie odświeżyłaby się widocznie aż do drugiego kliknięcia. Umieszczenie przycisków w panelu UpdatePanel i dodanie tych wyzwalaczy rozwiązało problem. – tsilb