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

C# Discussion :

pourquoi le programme ne s'arrête-t-il pas?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut pourquoi le programme ne s'arrête-t-il pas?
    Bonjour

    Quand je laisse le champ 'begdat' (d'un gridview en mode edit) vide ou tout sauf une date valide, j'ai l'erreur "Not a date 1" et le programme stoppe et je dois rentrer une date valide. Le message "Not a date 2." n'apparaît pas de la ligne 16.

    Mais si j'enlève les lignes 13 à 17 en quittant le champ 'begdat' vide ou avec n'importe quoi alors je n'ai plus le message "Not a date 1" mais bien à la ligne 18 le message
    String was not recognized as a valid DateTime
    Vu que les conditions sont remplies pour activer la ligne 4 (champ vide ou tout sauf une date valide), pourquoi ne le fait-il pas et continue-t-il jusqu'au bout?
    Y-a-t-il une priorité entre le code serveur et le code client?
    Merci

    Voici le 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
    protected void GridView1_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e)  
        GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];  
        TextBox begdattxt = (TextBox)row.FindControl("begdat");  
        if (!DateTime.TryParse(begdattxt.Text,out newDate))  
        {  
            e.Cancel = true;  
            ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", " alert('Not a date 1.');", true);
        }  
        else  
        {  
            begdat = Convert.ToDateTime(e.NewValues["begdat"]);  
        }
     
        if (!DateTime.TryParse(begdattxt.Text, out newDate) || !DateTime.TryParse(enddattxt.Text, out newDate))  
        {  
            e.Cancel = true;  
            ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", " alert('Not a date 2.');", true);
        } 
     
        else if (Convert.ToDateTime(enddattxt.Text) < Convert.ToDateTime(begdattxt.Text))  
        {  
            e.Cancel = true;  
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", " alert('endate must be >= begindate.');", true);  
            enddattxt.Focus();  
        }
    }

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Cela fait bien longtemps que je n'ai pas fait d'ASP, mais il me semble que le nom myscript au niveau de ClientScript.RegisterClientScriptBlock doit être unique. En cas de doublon, les deux scripts ne sont pas enregistrés et envoyés au client. Seulement un seul.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut
    Bonjour

    Vous avez raison en cas de doublon,

    je viens de changer la ligne 23
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", " alert('endate must be >= begindate.');", true)
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript2", " alert('endate must be >= begindate.');", true)
    Dans le cas où les lignes 14 à 18 n'existent pas (et on retire le 'else' de la ligne 20), il n'y a plus de doublons et pourtant, j'obtiens le même résultat :
    String was not recognized as a valid DateTime

  4. #4
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    il y a également la ligne 17 à changer !

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2021
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2021
    Messages : 77
    Par défaut
    Mais non, on fait justement abstraction des lignes 14 à 18. C'est dans ce cas que le message de la ligne 7 ("Not a date 1") n'apparaît plus et qui provoque l'erreur "String was not recognized as a valid DateTime" à la ligne 20 , ce qui est l'objet de ma question.

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Si on fait abstraction de ces lignes, le programme change !

    La ligne 20 est alors appelée sans que la validité du format de la date dans enddattxt soit vérifiée. Je suis prêt à parier que l'exception vient de là. Un petit coup de débogueur avec un point d'arrêt sur la ligne 20, et observer la valeur des champs vous le confirmera.

    ce qui est l'objet de ma question.
    Votre question n'est pas claire. C'est peut être évident pour vous car vous avez le code sous les yeux ainsi que le comportement observé, mais ce n'est pas notre cas !

    Dans votre message initial, la question est relative au message "not a date 2" qui n'apparait pas. Et là, vous l'avez tout simplement squizé dans votre dernier essai ! Nous n'avons pas de boule de cristal. Soyez clair et concis, et nous pourrons vous aider au mieux

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

Discussions similaires

  1. Programme qui s'arrête sans savoir pourquoi
    Par daprog dans le forum Général Python
    Réponses: 5
    Dernier message: 12/07/2019, 11h13
  2. Pourquoi un programme s'arrête-t-il ?
    Par ceugniet dans le forum C++
    Réponses: 4
    Dernier message: 29/12/2008, 11h04
  3. Réponses: 4
    Dernier message: 09/09/2006, 22h48
  4. Réponses: 9
    Dernier message: 30/05/2006, 19h44
  5. Pourquoi la programmation Shell ?
    Par am.adnane dans le forum Linux
    Réponses: 14
    Dernier message: 21/01/2006, 01h47

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