2010-12-20 5 views
2

Ich habe ein paar Textfelder/Etiketten in einem UpdatePanel. Wenn ich aus einem der Textfelder herausfahre, muss ein Label mit etwas Text aktualisiert werden. Dies führt dazu, dass die Seite auf das oberste Element zurückgesetzt wird.ASP.NET Focus Scrolls Seite zu Eingabe

Dies ist ein Dateneingabeformular und die Benutzer erwarten, dass sie die Maus überhaupt nicht benutzen müssen. Ich kann den Schwerpunkt auf der richtigen Textbox in Code zurück:

Page.SetFocus(tbxInput); 

oder

tbxInput.Focus(); 

In IE, wird die Browser Scrollposition gehalten (woo hoo!). In Chrome und Firefox ist es nicht; Der Bildlaufort wird so angepasst, dass das fokussierte Textfeld das letzte auf der Seite angezeigte Element ist. Das ist wirklich beunruhigend für den Benutzer.

Ich verwende die folgenden Regeln in meinem web.config:

<pages theme="Default" styleSheetTheme="Default" maintainScrollPositionOnPostBack="true" validateRequest="false"> 

Wie kann ich das Verhalten erreichen, die IE hat?

Antwort

1

Für diese Art von Sache aktualisiere ich den Beschriftungstext von Javascript (möglicherweise mit einem AJAX-Aufruf an einen Web-Service oder eine Seite Methode).

+0

Gibt es eine Möglichkeit, diese Situation zu umgehen, indem der Fokus beim Zurücksetzen des Texts des Etiketts beibehalten wird? Es scheint übertrieben, das zu tun: [ – Harper

+0

@Harper hast du jemals eine Antwort auf deinen Kommentar gefunden? –

+0

@Tristan Descartes, meine Lösung (Aktualisieren der Beschriftung in Javascript) vermeiden Sie, den Fokus zu verlieren. Das Problem, zu dem das OP läuft, ist, dass sein UpdatePanel ein Postback macht und durch den Code aktualisiert wird. Jedoch ist meine Lösung reines Javascript, verursacht kein Postback und lässt den Fokus völlig unberührt. Sie können sogar AJAX in Ihrem Javascript verwenden, wenn Sie einige Werte vom Server erhalten möchten. – tster

0

Mit asp.net AJAX UpdatePanel ist eine Option. Auch welche Version von .net Framework verwenden Sie.

Als per this mit 4.0 sollte es funktionieren, aber ich habe es nicht versucht.