IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Ajax Discussion :

Perte du focus dans un UpdatePanel suite à un AutoPostBack d'une TextBox


Sujet :

ASP.NET Ajax

  1. #1
    Membre régulier Avatar de titan_33
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 91
    Points
    91
    Par défaut Perte du focus dans un UpdatePanel suite à un AutoPostBack d'une TextBox
    Le titre est long mais mon problème est dit

    Voici le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
        <form id="form1" runat="server">
        <div>
        <ajax:ScriptManager ID="ScriptManager1" runat="server"></ajax:ScriptManager>
            <h1>Test UpdatePanel - Calendar - Focus</h1>
            <ajax:UpdatePanel ID="udpMain" UpdateMode="Conditional" runat="server">
            <ContentTemplate>
                <asp:TextBox ID="txtVille" runat="server"
                             AutoPostBack="true" 
                             ontextchanged="txtVille_TextChanged" />
                <br /><br />
                <asp:RadioButtonList ID="rblQuestion" runat="server" RepeatDirection="Horizontal">
                    <asp:ListItem Text="Oui" Value="O" />
                    <asp:ListItem Text="Non" Value="O" />
                </asp:RadioButtonList>
                <br /><br />
                <asp:Button ID="btnValider" runat="server" Text="Valider" />
                </ContentTemplate>
            </ajax:UpdatePanel>
        </div>
        </form>
     
    ==>> CODE - BEHIND
        protected void txtVille_TextChanged(object sender, EventArgs e)
        {
     
        }
    Donc, dans un UpdatePanel, il y a une TextBox avec un autoPostBack et une méthode qui ne fait rien.
    Ensuite il y a le RadioButtonList.

    Mon problème est le suivant : je modifie le contenu de ma TextBox, je clique sur le RadioButtonList et je n'ai pas le focus de positionné sur le RadioButton List, pour l'avoir sur le RadioButtonList, il faut que je reclique dessus.

    Et cela me dérange profondément depuis plusieurs semaine

    Merci d'avance pour votre aide precieuse

    Titan

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 60
    Points : 71
    Points
    71
    Par défaut
    Lors d'un Postback, tu perds forcément le focus que ce soit dans un UpdatePanel ou non. D'après Microsoft, "Ce comportement est voulu par la conception même du produit."

    Par conséquent,
    • soit tu peux effectuer un traitement asynchrone de ce qui se passe dans le txtVille_TextChanged
    • soit tu peux essayer d'utiliser des verrues (comme par exemple celle-ci) par forcer le focus sur le webcontrol suivant en utilisant le TabIndex.

  3. #3
    Membre régulier Avatar de titan_33
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 91
    Points
    91
    Par défaut
    Effectivement mattofmath le code suivant fonctionne sous IE.

    Parcontre lorsque j'ajoute le UpdatePanel, le focus n'est plus positionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
       <form id="Form1" method="post" runat="server">
          <ajax:ScriptManager ID="ScriptManager1" runat="server"></ajax:ScriptManager>
          <ajax:UpdatePanel ID="udpMain" UpdateMode="Conditional" runat="server">
             <ContentTemplate>
                <asp:textbox id="TextBox1" runat="server" 
                             AutoPostBack="true" 
                             OnTextChanged="TextBox1_TextChanged" />
                <br />          
                <asp:textbox id="TextBox2" runat="server" 
                             AutoPostBack="true" 
                             OnTextChanged="TextBox2_TextChanged" />
                <br />          
                <asp:textbox id="TextBox3" runat="server" 
                             AutoPostBack="true" 
                             OnTextChanged="TextBox3_TextChanged" />
                <br />          
                <asp:Button id="Button1" runat="server" Text="Button" />
             </ContentTemplate>
          </ajax:UpdatePanel>
     
    	<script language="javascript" type="text/javascript">
    		document.all["<%=Focus%>"].focus();
    		if("<%=ControlType%>" == "TextArea")
    			document.all["<%=Focus%>"].select();
    	</script>
     
      </form>
    Code Behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        public string Focus;
        public string ControlType;
     
        private void Page_Load(object sender, System.EventArgs e)
        {
            Focus = "TextBox1";
            ControlType = "TextArea";
        }
     
        protected void TextBox1_TextChanged(object sender, System.EventArgs e)
        {
            Focus = "TextBox2";
            ControlType = "TextArea";
        }
     
        protected void TextBox2_TextChanged(object sender, System.EventArgs e)
        {
            Focus = "TextBox3";
            ControlType = "TextArea";
            this.udpMain.Update();
        }
     
        protected void TextBox3_TextChanged(object sender, System.EventArgs e)
        {
            Focus = "Button1";
            ControlType = "Button";
        }
    Merci d'avance pour votre aide

    Titan

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/04/2014, 11h24
  2. Perte de focus dans un menu déroulant
    Par erehcab dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 17/02/2012, 22h01
  3. Réponses: 2
    Dernier message: 01/06/2011, 18h39
  4. Dans un "userform", vérification du contenu d'une "textbox" en la quittant
    Par Harry Covair dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2008, 09h24
  5. gestion de la perte de focus dans un TEdit
    Par PtiteDéveloppeuse dans le forum Composants VCL
    Réponses: 19
    Dernier message: 07/04/2008, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo