2009-01-06 7 views
23

Czy istnieje sposób wykonania skryptu po zakończeniu procesu UpdatePanel.ASP.NET - UpdatePanel i JavaScript

Mam stronę, która umożliwia "wstawianie", "kopiowanie" i "edytowanie" rekordu. Wszystko to odbywa się w module UpdatePanel, aby uniemożliwić nawigację po stronie. Gdzieś indziej na stronie Chciałbym wydrukować wiadomość "flash" - np. "Udało ci się wprowadzić rekord." Nie jest w pobliżu UpdatePanel i chciałbym użyć efektu jQuery w komunikacie, aby zniknął po 4 sekundach. Jak mogę wysłać skrypt z powrotem do UpdatePanel lub zlecić jego wykonanie po odświeżeniu UpdatePanel? Czy powinienem napisać skrypt do asp: dosłowny? myśli?

Odpowiedz

29

Tak:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

A potem:

function endRequestHandler(sender, args) 
{ 
    // Do stuff 
} 

Dokumentacja here i here. Pamiętaj, że spowoduje to uruchomienie każdego żądania AJAX na stronie.

26

To powinno załatwić sprawę:

 <script type="text/javascript"> 
      var prm = Sys.WebForms.PageRequestManager.getInstance(); 
      prm.add_beginRequest(BeginRequestHandler); 
      prm.add_endRequest(EndRequestHandler); 

      function BeginRequestHandler(sender, args) 
      { 
       //Jquery Call 
      } 

      function EndRequestHandler(sender, args) 
      { 
       //Jquery Call 

      } 
     </script> 
+1

Dzięki. Użyłem go, aby dodać spinner. –

2

Bruno,

pierwsze, aby odpowiedzieć na bezpośrednie pytanie. W wywołaniu wywołania, które jest wywoływane przez panel aktualizacji, powinieneś być w stanie użyć wywołania RegisterStartupScript w celu wywołania metody JS. Następnie w metodzie JS, by pokazać komunikat, a następnie można użyć zrobić:

setTimeout('$('#myMessage').fadeOut("slow")', 4000); 

mieć ona zanikać po 4 sekundach.

Aby przejść o krok dalej, ponieważ już implementujesz JavaScript, zapraszam do wypróbowania this article about UpdatePanels. Jeśli to możliwe, spróbuję wysłać wywołania Ajax, aby wstawić, skopiować i edytować, co jeszcze bardziej uprościłoby opinię użytkownika i zapobiegałoby nadmiernym informacjom w całym drucie.

+0

Nie wierzę, że wywołania RegisterStartupScript mogą wstrzykiwać JS do wywołania zwrotnego AJAX. –

+0

Odsuwam się od UpdatePanels i przechodzę do WCF/AJAX przez MS AJAX i jQuery. To tylko starsze projekty, które działają, ale pomyślałem, że dodam kilka UpdatePanels, żeby były bardziej śliskie. – BuddyJoe

3
var requestManager = Sys.WebForms.PageRequestManager.getInstance(); 
requestManager.add_beginRequest(function() { alert('here1') }); 
requestManager.add_endRequest(function() { alert(here2') }); 

Źródło: http://www.howtositecore.com/?p=36

3

Sposób Sys.WebForms.PageRequestManager.getInstance() działa świetnie dla mnie.

Pracuję z wieloma stronami, które zawierają wiele dzienników aktualizacji. Dowiedziałem się, że to się automatycznie uruchomi, nawet jeśli Updatepanel nie jest potrzebny do odświeżenia. Więc wewnątrz funkcji, która uruchamia się w przypadku zdarzenia, upewnij się, że masz coś takiego:

function BeginRequestHandler(sender, args) { 
if (args.get_postBackElement().id == "ID of the Updatepanel") { 
// do stuff here