2009-06-17 7 views
1

Ich habe eine ASP.NET-Gridview, die dataentre Textfelder in der Fußzeile hat. Nachdem der Benutzer eine Zeile hinzugefügt hat, setze ich den Fokus auf das erste Textfeld im Codebehind zurück, indem ich in der Gridview-Aktualisierungsroutine etwas wie Textbox1.focus() verwende. Das Problem ist, dass, obwohl es aussieht, als ob das Textfeld den Fokus erhält (der Cursor blinkt in der Textbox), Sie nichts eingeben können, bis Sie auf ein anderes Textfeld im Formular klicken und dann auf Zurück klicken. Dies scheint nur in IE8 zu passieren. Als ich das in Firefox getestet habe, hat der Textkasten den Fokus bekommen und ich konnte neuen Text richtig eingeben.Textfeld erhält den Fokus, aber Sie können nichts eingeben

Danke für jede Hilfe.

Antwort

1

Immer noch keine Lösung gefunden, aber ich habe gerade bemerkt, dass wenn IE8 im Kompatibilitätsmodus ist das Textfeld wie erwartet funktioniert. Dies ist das dritte Problem, das ich im Zusammenhang mit dem Kompatibilitätsmodus des IE8 hatte.

0

Ich hatte ein ähnliches Problem, wo eine Textbox in einem Update-Panel nicht erlauben würde, den Benutzer zu interagieren trotz scheinbar Fokus zu haben, bis es den Fokus verlor und es zurückbekam. Wie beim ursprünglichen Poster passierte es nur im IE8 im Nichtkompatibilitätsmodus.

Ich implementiert die folgende Problemumgehung, die den Trick zu tun scheint:

ScriptManager.GetCurrent(Me.Page).SetFocus(txtAnotherTextBox) 
ScriptManager.RegisterStartupScript(Me, Me.GetType, "Focus", _ 
"setTimeout(function() { document.getElementById('" _ 
& txtTextBox.ClientID & "').focus(); }, 200);", True) 

Grundsätzlich konzentriere ich mich zunächst auf einer verschiedene Kontrolle, dann ein Skript registrieren, auf der Steuerung zu konzentrieren, die ich mit einem 200ms wollte verzögern.

Verwandte Themen