Wie zu bewegen asp.net Seite nach oben in c#
Wenn der Benutzer, der blättert eine Seite, ich möchte die Seite wieder nach oben mit einem button-Klick. Der Benutzer auf die Schaltfläche klickt, und ich weiß Validierung. Die Fehlermeldung ist an der Spitze der Seite, und die Schaltfläche ist am unteren Rand der Seite. Wenn etwas unwirksam ist, dann möchte ich an die Nutzer zu schicken Blättern Sie zurück zum Anfang der Seite, so dass Sie sehen können, die Fehlermeldung.
Wie kann ich dies tun? Ich will nicht zu verwenden, java-script, wenn ich muss. Ist es Weg, dies zu tun in C# aus dem code hinter?
Ich habe dies ausprobiert:
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ScrollPage", "scrollToTop();", true);
Zur Laufzeit erhalte ich die Fehlermeldung: 0x800a1391 - JavaScript runtime error: 'scrollToTop' ist undefiniert
- warum müssen Sie einen Bildlauf nach oben , wenn der Benutzer nach unten Blättern müssen, das ist schlecht UX oder etwas, das Sie benötigen konnten, um zu erklären, mehr zu verstehen, Ihre Anforderung!
- Wird der Inhalt anders sein? Wenn nicht ein roundtrip zum server ist nicht der Weg, dies zu tun-und JavaScript - /html-ist
- Ich aktualisiert meine Frage
- Warum nicht Sie die überprüfung in einem fixed-div (
position: fixed
)? So dass Sie nicht scrollen müssen, um es zu sehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ändern code-behind verwenden folgende.
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ScrollPage", "window.scroll(0,0);", true);
Hier
window.scroll(x,y)
bedeutet, wo zu scrollen ( x - Kabel, y - Kabel ) . Ich habe verwendet, 0,0 bis nach OBEN.Die Sie verwendet hatten
scrollToTop
zu verwenden, müssen Sie diese Funktion in aspx, oder verwenden mir.Weitere Infos , finden Sie diese - http://www.w3schools.com/jsref/met_win_scrollto.asp
Update
Seit der OP verwendet
updatepanel
, ich habe einen Vorschlag, um das gleiche zu erreichen. Verwenden Sie unten. Ich habe referierten diese.scrollToTop
in meiner Lösung.MaintainScrollPositionOnPostback
entfernt werden, oder auf false eingestellt ist.Können Sie versuchen, die folgenden in der page-Direktive
<%@ Page MaintainScrollPositionOnPostback="false"
Oder in der code-behind können Sie die folgenden schreiben:
Seite.MaintainScrollPositionOnPostBack = false;
und, wenn Sie die async-post zurück, als finden Sie in folgenden Beitrag:
Bildlauf zum Anfang der Seite nach ASP.Net Ajax Async-Postback ohne JQuery
Brauchen Sie nicht einmal C# für das. Sie können dies tun, mit nur HTML:
Konnte ich keine der oben genannten arbeiten für mich.
Mein Szenario: ich habe ein GridView-Steuerelement eingebettet in eine MultiView. Der Benutzer klickt auf etwas, auf das GridView-Steuerelement, und es schaltet Ansichten zur Ausgabe in Bezug auf was geklickt wurde. Der browser würde versuchen zu bleiben in der gleichen position auf der Ausgabe-wie die Zeile, auf die geklickt wurde, die würde einen Teil des Weges unten auf der Seite oder ganz unten.
Ich habe versucht mit Javascript scrollen Sie zu der oben auf das click-Ereignis der Schaltfläche in der Zeile. Das klappte auch.. aber bevor es eingeschaltet, um die neue Ansicht ein, wo es umgehend wieder nach unten gescrollt.
Ich schließlich versuchte dies und es funktioniert. Ich betreibe es nach der die Anzeigen geschaltet ist, und der Inhalt gerendert.
War ich besorgt, wenn ich wieder zurück auf die ursprüngliche Ansicht, dass ich am oberen Rand der Seite die Seite wieder, jedoch der browser scrollt zurück an die ursprüngliche position auf das GridView, das ist schlicht genial.
Obwohl Sie nicht wollen, um die JavaScript verwenden, können Sie erwägen, die Verwendung der OnClientClick="" Eigenschaft eines Asp.Net element auf der Ansicht, damit Sie Ihre business-Logik können noch OnClick="" Eigenschaft.
Diese legt einfach das scrollen wieder ganz oben auf der Seite.
Wenn Sie möchten, um eine schöne animation, mit ihm gehen Sie, und verwenden Sie einen JavaScript-Bibliothek wie jQuery und eine über Funktion.