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

InfoPath .NET Discussion :

Utilisation du ReportError


Sujet :

InfoPath .NET

  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut Utilisation du ReportError
    Bonjour,

    J'ai deux champs. Je souhaite que quand je saisisse quelque chose dans le premier champ, le second devienne obligatoire. Pour ce faire j'utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void champ1_Validating(object sender, XmlValidatingEventArgs e)
            {
                if (!string.IsNullOrEmpty(e.NewValue))
                    if (string.IsNullOrEmpty(e.Site.SelectSingleNode("/my:mesChamps/my:champ2", NamespaceManager).Value))
                        e.ReportError(e.Site.SelectSingleNode("/my:mesChamps/my:champ2", NamespaceManager).CreateNavigator(), false, "Champ obligatoire");
            }
    Pas de problème cela fonctionne très bien.
    En revanche lorsque je rentre une valeur dans le second champ, l'erreur reste visible avec la mention "Champ obligatoire". C'est logique, mais comment faire pour supprimer cette erreur sans avoir à passer par l'évènement associé à l'autre champ ?
    Existe-t-il une fonction de ce style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.ReportError.delete...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Membre éprouvé
    Homme Profil pro
    Référent technique
    Inscrit en
    Juillet 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 834
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Pour supprimer, vous pouvez utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    this.Errors.Delete("MonErreur");
    

    Et pour l'ajouter, il est de même possible d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    this.Errors.Add(MonNoeud, "MonErreur", "Voici le libéllé de mon erreur");
    
    Rémi MATAYRON
    N'hésitez pas à visiter mon blog dédié à InfoPath et SharePoint : http://rmatayron.blogspot.com/

    Pour plus de visibilité sur le forum, marquer la question en [Résolu] lorsque la réponse fournie vous convient.

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Lors de l'utilisation de la fonction :
    e.ReportError(e.Site, false, "mon erreur");
    il n'est pas spécifié de nom. Comment le retrouver avec la commande proposé ?
    Qu'elle est la différence entre "ReportError" et "Errors" ?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Je pense avoir trouvé des éléments de réponse...
    Le "e.ReportError" permet de générer une erreur du même type que lors de l'utilisation de la fonction "Validation des données" du designer.
    "Errors" permet quand à lui de générer des erreur de type système.
    Le traitement est donc complètement différent.

    Par exemple, le ReportError disparait de façon automatique lors de la validation d'un champ, alors que une "Errors" doit être supprimée manuellement.

    Dans mon cas présent, j'utilise les "e.ReportError".
    Cela fonctionne très bien, voici un exemple des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void Champ1_Validating(object sender, XmlValidatingEventArgs e)
            {
                if (!string.IsNullOrEmpty(e.NewValue))
                {
                    if (DateTime.Parse(e.NewValue) > DateTime.Now) //Test si la date est saisie et si elle correspond au format attendu.
                        _IsValidate = true;
                    else
                    {
                        e.ReportError(e.Site, false, string.Format("La date correspondant à votre demande doit être inférieur ou égale à la date du jour. Soit le {0}", DateTime.Now.ToShortDateString()));
                        _IsValidate = false;
                    }
                }
            }
    Lorsque je lance le formulaire en mode débug, cela fonctionne très bien.
    En revanche, dès que je publie le formulaire dans la central admin et que je l'active pour une collection de site. Mes tests ne fonctionnent plus.

    Une idée ?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Je rectifie mes propos, mes tests fonctionnent correctement... OUF !

    Mon problème c'est que l’éventement de validation ne se fait pas lors de la saisie...
    Si je tente de fermer mon formulaire, je vois mes champs devenir rouge et m'indiquer les différents messages d'erreurs. En revanche, lors de la saisie d'une information, mon test ne s'effectue pas. (Via le navigateur toujours, pas de problème pour le client lourd...)

    Edit : Toutes les fonctions de validation "monChamp_Validating" ne s’exécutent que lors de l'envoi ou la fermeture du formulaire. Est-ce un comportement normal ?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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