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

Framework .NET Discussion :

DatagridView et EditingControl perso : comment empecher la validation en cas d'erreur


Sujet :

Framework .NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut DatagridView et EditingControl perso : comment empecher la validation en cas d'erreur
    Bonjour à tous,

    J'ai créé mon propre type d'editing control pour une datagridview afin de pouvoir contrôler la saisie plus facilement.
    Mon contrôle d'édition annule l'évènement de validation si la saisie est invalide mais malgré cela, mon datagridview change quand même de case.

    Savez-vous comment empêcher la validation de la saisie à partir du contrôle d'édition?

    Merci d'avance,
    Nicolas

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    De mémoire, dans l'évènement de validation y'a un parametre Cancel que tu peux mettre à false pour invalider la saisie.

    Ceci dit, je ne suis pas sûr que ça empêche l'ajout d'une ligne. Y'a quelque temps j'ai dû recoder pas mal de trucs sur la partie validation pour avoir un résultat potable (qui collait avec ce que je voulais)

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    J'avais oublié ce post

    Je pouvais mettre le paramètre Cancel à true lors de la validation de mon contrôle d'édition, ça ne changeait rien.

    L'astuce que j'ai trouvée est d'ajouter une propriété à mon contrôle d'édition qui renvoie un bool pour saovir si la saisie est valide ou pas.
    Et lors de l'évènement CellValidating de ma datagridview, je récupère l'instance de mon contrôle d'édition avec la propriété EditingControl, et selon la valeur de la propriété du contrôle, je mets la valeur du paramètre Cancel à true ou pas.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected override void OnCellValidating(DataGridViewCellValidatingEventArgs e)
    {
        base.OnCellValidating(e);
     
        if (this.EditingControl != null)
        {
            // Tester la validité de l'input
            NumericEditingControl nec = this.EditingControl as NumericEditingControl;
            e.Cancel = !nec.TestInput();
        }
    }

  4. #4
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    En faisant ça, j'ai eu des pb.
    Pour valider, je voulais que la chaine ne soit pas nulle ou vide.
    Mais du coup, quand je cliquait sur la ligne vide en bas (celle de l'ajout) par erreur, impossible de cliquer ailleurs si je rentrais pas une valeur. J'étais obligé de faire une nouvelle ligne

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected override void OnCellValidating(DataGridViewCellValidatingEventArgs e)
    {
        base.OnCellValidating(e);
        if (this.EditingControl != null && this.CurrentRow.Index < this.Rows.Count - 1)
        {  // Tester la validité de l'input
           NumericEditingControl nec = this.EditingControl as NumericEditingControl;
           e.Cancel = !nec.TestInput();
        }
    }
    Non?

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Ouais c en gros ce que j'ai fait.
    Sauf qu'en plus je voulais éviter qu'une nouvelle ligne apparaisse si on n'a pas validé toutes les cellules de la nouvelle ligne et que celle qui ne sot pas validées apparaissent en rouge

    Bref, tout ça pour dire que la validation en ASP.Net c'est plus simple

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/02/2012, 16h38
  2. Réponses: 7
    Dernier message: 17/07/2007, 16h57
  3. Comment empecher le Alt + F2 ??
    Par phoenix007 dans le forum Access
    Réponses: 12
    Dernier message: 25/08/2006, 08h52
  4. [JBuilder9][JSP] Comment empêcher la recompilation
    Par lamimolette75 dans le forum JBuilder
    Réponses: 2
    Dernier message: 11/07/2003, 15h20

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