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 Discussion :

Detecter ecriture dans une textBox avec Timer


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut Detecter ecriture dans une textBox avec Timer
    Bonjour.

    Mon probleme est tout bete mais je ne parviens pas a trouver la solution. J'ai une textBox sur laquelle je recupere l'evenement ontextchanged qui appelle une certaine fonction.
    Or lorsque j'execute mon programme, cette fonction n'est appelee que lorsque je clique sur le bouton de validation, alors que je voudrais qu'elle soit appelee a chaque fois que l'utilisateur tape une lettre dans la textbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <p>
            <asp:TextBox ID="txtBox" runat="server" Height="66px" 
                ontextchanged="txtBox_TextChanged" TextMode="MultiLine" Width="330px"></asp:TextBox>
    &nbsp;<asp:Button ID="btnSend" runat="server" Height="67px" onclick="btnSend_Click" 
                Text="Send" Width="40px" />
        </p>
    J'ai essaye de mettre la propriete "AutoPostBack" a "true" mais ca ne change rien.
    Que faut-il faire pour que cet evenement fonctionne ?

    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2006
    Messages : 152
    Par défaut
    Il s'agit du comportement normal.
    La documentation MSDN sur l'événement "TextChanged" te l'indique bien : "Se produit lorsque le contenu de la zone de texte change entre des publications sur le serveur".
    Pendant que l'utilisateur saisit un texte dans le composant HTML (il s'agit d'un 'input' de type 'text'), il n'y a pas de retour serveur.

    Tu as néanmoins la possibilité de gérer l'événement client de "texte en train d'être saisi".

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Merci
    En effet j'avais vu la documentation mais je pensais que l'evenement entrainerait justement cette publication.
    Ca explique pourquoi tout se passe une fois le bouton clique.

    Mais alors pour gerer l'evenement "texte en train d'etre saisi" comment faut-il proceder ? Est-ce qu'il faut necessairement inclure du Javascript ? Ou creer son propre evenement?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Shargat Voir le message
    Mais alors pour gerer l'evenement "texte en train d'etre saisi" comment faut-il proceder ? Est-ce qu'il faut necessairement inclure du Javascript ? Ou creer son propre evenement?
    Puisqu'il n'y a pas de postback à chaque fois que l'utilisateur tape un caractère (heureusement d'ailleurs !), le serveur ne peut rien exécuter en réponse à la frappe... donc oui, tu es obligé de le faire en Javascript. C'est pour faire quoi exactement ? Si c'est pour faire de l'autocompletion, il y a déjà des composants qui le gèrent, par exemple l'AutoCompleteExtender de l'ASP.NET AJAX Control Toolkit

    http://www.asp.net/AJAX/AjaxControlT...oComplete.aspx

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Oui c'est bien de l'autocompletion.
    Merci
    Je vais me lancer dans la lecture d'un chapitre sur les Web services et je vais voir ce que ca donne.

  6. #6
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Finalement je voudrais essayer d'utiliser un Timer pour que toutes les secondes, le programme regarde si le contenu de la textBox a change, et si c'est le cas, agit en consequence.
    Le probleme c'est que le programme ne reagit pas comme je le souhaiterais.

    J'ai donc ecrit un petit programme avec juste une listBox, et je souhaite que toutes les secondes, le programme affiche "tick" dans la listBox, pour bien visualiser les declenchements d'evenements du timer.
    Or, lorsque je lance l'application, elle se bloque, semblant entrer en boucle infinie sans afficher les "ticks" du Timer toutes les secondes ni meme la listBox (le navigateur affiche une page blanche).
    Voici mon 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
    27
    28
    29
    using System;
    ...
    using System.Timers;
     
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            StartTimer();
        }
     
        protected void StartTimer()
        {
            System.Timers.Timer myTimer = new System.Timers.Timer();
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Interval = 1000;
            myTimer.Start();
     
            while (true)
            {
                ;
            }
        }
     
        protected void myTimer_Elapsed(object source, ElapsedEventArgs e)
        {
            listBoxSent.Items.Add("tick");
        }
    }

    Merci d'avance

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    C'est quoi ça:

  8. #8
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Cette boucle n'est-elle pas periodiquement interrompue par l'evenement Elapsed du Timer ?

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Je sais pas, mais de toute façon, ça peut pas marcher ton code.
    Le serveur ne peut pas mettre à jour la page client toutes les secondes.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Avec le while(true), le Page_Load ne se termine jamais et la page n'est donc jamais affichée...

    C'est un timer client (javascript) qu'il te faut, pas un timer serveur
    (dans la boite à outils, catégorie AJAX extensions)

  11. #11
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Merci pour vos reponses

    Citation Envoyé par tomlev Voir le message
    Avec le while(true), le Page_Load ne se termine jamais et la page n'est donc jamais affichée...

    C'est un timer client (javascript) qu'il te faut, pas un timer serveur
    (dans la boite à outils, catégorie AJAX extensions)

    Ok je comprends bien l'erreur. Desole mais pour l'instant je patauge un peu dans la discernation entre ce que je dois executer cote client et cote serveur.
    Je vais travailler avec ce Timer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Insertion dans une textbox avec du texte enrichi
    Par dumas.blr dans le forum IHM
    Réponses: 0
    Dernier message: 31/12/2012, 15h57
  2. Reconnaisance de caractère dans une TextBox avec bibliothèque de mot
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/09/2008, 17h38
  3. Ecriture dans un fichier avec une applet Java
    Par foued_scorpion dans le forum Applets
    Réponses: 1
    Dernier message: 25/10/2006, 11h30
  4. ecriture dans une textbox excel
    Par lensois62 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2006, 12h34
  5. [VB6] Scrollbar dans une frame avec des textbox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 44
    Dernier message: 01/03/2006, 08h16

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