2009-06-17 5 views
1

J'ai une vue grid ASP.NET qui contient des zones de texte dataentry dans la ligne de pied de page. Après que l'utilisateur ajoute une ligne, je réinitialise focus à la première zone de texte dans le codebehind en utilisant quelque chose comme Textbox1.focus() dans le gestionnaire de mise à jour gridview. Le problème est que, bien qu'il semble que la zone de texte obtienne le focus (le curseur clignote dans la zone de texte), vous ne pouvez rien entrer jusqu'à ce que vous cliquiez sur une autre zone de texte sur le formulaire, puis cliquez sur Précédent. Cela semble seulement se produire dans IE8. Quand j'ai testé ceci dans Firefox, la zone de texte a été mise au point et j'ai pu entrer le nouveau texte correctement.La zone de texte obtient le focus mais vous ne pouvez rien saisir

Merci pour toute aide.

Répondre

1

Je n'ai toujours pas trouvé de solution mais j'ai juste remarqué que lorsque IE8 est en mode de compatibilité, la zone de texte fonctionne comme prévu. C'est le troisième problème que j'ai eu qui est lié au mode de compatibilité d'IE8.

0

J'ai eu un problème similaire, où une zone de texte dans un panneau de mise à jour ne permettait pas à l'utilisateur d'interagir malgré le fait qu'il semblait avoir le focus jusqu'à ce qu'il perde le focus et le récupère. Comme l'affiche originale, c'est seulement arrivé dans IE8 en mode non-compatibilité.

I mis en œuvre la solution suivante qui semble faire l'affaire:

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

En fait, je me concentre d'abord sur un contrôle différent, puis enregistrez un script pour se concentrer sur le contrôle que je voulais avec 200ms retard.

Questions connexes