2010-02-24 15 views
0

J'ai un contrôle utilisateur (contrôle d'erreur) dans un gabarit. par défaut le contrôle de l'utilisateur est caché (visible faux)focus sur le contrôle utilisateur en C#

sur le clic d'un bouton de soumission je montre le contrôle d'erreur. Maintenant sur le retour je veux apporter le foyer à ce contrôle. J'écris le script de java dans le registre Démarrage script comme suit:

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Scroll", "window.scrollTo(0, 0)", true); 

à la page postback monte montre ce contrôle, puis revient à sa position de défilement précédente.

Répondre

0

Avez-vous réglé MaintainScrollPositionOnPostback à true dans le page directive en haut de votre page/page maître ou dans le <pages> element de votre web.config?

Vous pouvez également envisager d'utiliser la Focus method du contrôle dans votre gestionnaire de postback

Modifier pour clarifier:

Si l'un de ceux-ci sont mis à true alors il est très probable qu'ils écrasera script de démarrage pour renvoyer la page en haut de la page - avez-vous essayé de la définir sur false dans la directive Page, ou sur l'objet Page dans le même code qui affiche le contrôle d'erreur?

+0

J'ai essayé aussi dosent travail – SaveMe

+0

Salut, je fais appel méthode followin sur l'événement bouton cliquable toujours pas d'utilisation .. comme u peut le voir, je l'ai essayé gestionnaire de script. setfocus aussi mais pas de répit. public void SetFocus() { Page.MaintainScrollPositionOnPostBack = false; ScriptManager.RegisterStartupScript (Page, Page.GetType(), "Scroll", "window.scrollTo (0, 0)", true); // ScriptManager1.SetFocus (ErrorControl1.FocusControl); } – SaveMe

0

Enfin, j'ai résolu ce problème. Voici la façon dont je le fais ...

j'ai ajouté une zone de texte de largeur zéro% dans le même où (est placé le contrôle d'erreur) mon contrôle utilisateur

maintenant chaque fois qu'une erreur se produit que j'appelle la suite méthode.

public void SetFocus() 
     { 
      ScriptManager3.SetFocus(txtFocus.ClientID); 
     } 

bien que le contrôle d'erreur ne se concentre pas dans la réalité ce travail intelligent me aide autour à atteindre mon objectif.

espérons qu'il est utile pour les autres

0
private void Control_GotFocus(object sender, EventArgs e) 
    { 
     Console.WriteLine("Control GotFocus : " + ((sender as Control).Name)); 
    } 
Questions connexes