„Go to top” po asynchronicznym postbacku w UpdatePanelu

Dziś napotkałem banalny wydawać by się mogło problem, ale może komuś oszczędzi grzebania.

Miałem na stronie dwie listy – po lewej długą, po prawej krótką. Wykonanie akcji na lewej liście miało przeładowywać prawą. Realizacja „problemu” oparta o UpdatePanele, ustawione jako conditional. Nie wykonywał się więc postback całej strony a tylko asynchroniczne postbacki wybranych elementów.

Problem polegał na tym, że użytkownik będąc na końcu długiej listy i wywołując akcję nie widział krótkiej listy i nie widział, czy cokolwiek się działo. Najlepszym sposobem byłoby więc JavaScriptowe przewinięcie strony na górę po wykonaniu akcji…

Realizuje to poniższy kod:

function pageLoad() {
    var manager = Sys.WebForms.PageRequestManager.getInstance();
    manager.add_endRequest(endRequest);
}
function endRequest(sender, args) {
window.scrollTo(0, 0);
}

Jak widać pobierana jest referencja na RequestManager, do której dodajemy „delegata” naszej funkcji JS.
Proste i szybkie ;-) Co ciekawe, w VS2008 Intellisense ujawnia jeszcze kilka ciekawych możliwości:

Intellisense VS2008 - PageRequestManager

Intellisense VS2008 - PageRequestManager

Generalnie pierwszy raz miałem do czynienia z UpdatePanelami. Interesująca sprawa dla kogoś, kto (jak ja) ma dwie lewe ręce do JS, jednak, żeby cokolwiek zrobić i mieć pewność, że działa tak jak chcemy… Przygotujcie się na długie lektury internetowych tutoriali. Może skrobnę coś w najbliższym czasie o UpdatePanelu – po tym jak sam się podszkolę ;-)


Nie znaleziono podobnych wpisów.

Możesz śledzić odpowiedzi do tego wpisu za pomocą RSS 2.0 feed. Możesz leave a response, or trackback z Twojej własne strony.

1 Komentarz »

 
 

Dodaj komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*