2009-03-10 9 views
3

Haben einen Timer in einem Updatepanel. Es wird ständig aktualisiert (etwa alle 2,5 Sekunden). Wenn es beim Scrollen aktualisiert wird, setzt es die Bildlaufposition zurück auf das, was es vor der teilweisen Aktualisierung war :(ASP.NET: Timer und Scroll-Position

Ich benutze ASP.NET 3.5 und MaintainScrollPositionOnPostback wird auf false gesetzt (selbst wenn das Verhalten auf true eingestellt ist, ändert sich nichts).

Keine Ahnung, warum dies geschieht, aber die Benutzerfreundlichkeit ist ärgerlich ...

Mit freundlichen Grüßen, Sascha

Antwort

4

Wir hatten ein ähnliches Problem, bei dem ein asynchroner Postbacks den Benutzer an die Spitze eines Reset würde sehr lange Seite, nachdem wir den folgenden Code gefunden haben: http://forums.asp.net/t/1047815.aspx

Wir haben das folgende Javascript auf unserer Seite nach den ScriptManager auf der Seite eingefügt.

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 

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

    function beginRequest() { 
     prm._scrollPosition = null; 
    } 
</script> 

Dies machte es so, dass das Postback die Scroll-Position des Benutzers nicht zurückgesetzt hat, wenn das Postback zurückgegeben wurde.

Ich bin mir nicht sicher, ob dies genau das Problem ist, das Sie erleben. Sie können sich auch diesen Beitrag ansehen: Reset scroll position after Async postback - ASP.NET, der eine robustere Methode zum Festlegen der Bildlaufposition nach einem Postback behandelt.

+0

Fehlermeldung Sys.Webforms undefined. Aber auf dem Link, den Sie gepostet haben, gibt es noch ein weiteres Snippet (schreiben Sie Ihre eigene leere scrollTo-Funktion). Das hat den Trick gemacht. Muss untersuchen, warum ich einen Fehler mit Ihrem Beispiel bekomme ... – Sascha

+0

Kann einer der folgenden sein: 1. Javascript erscheint vor dem ScriptManager http://bit.ly/8askn 2. Web.Config nicht für AJAX eingerichtet. http://bit.ly/ktZK2 3. EnablePartialRendering muss in Ihrem ScriptManager auf true gesetzt sein. http://bit.ly/14Gsj Am wahrscheinlichsten ist Schuld # 3. – sgriffinusa

+0

Schuldige war (1). Versucht und danach lesen Sie Ihren Beitrag. Vielen Dank. – Sascha