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

Silverlight Discussion :

[SL4] Différences sur DataAnnotations avec SL3


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut [SL4] Différences sur DataAnnotations avec SL3
    Bonjour,

    Dans un projet exemple, récupéré en SL3, j'ai une classe qui permet visiblement d'afficher un message rouge automatiquement sur un composant, lorsqu'il y a une erreur.

    Voici la partie du code qui permet ceci :
    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
     
             public object ValidationError
            {
                get
                {
                    return null;
                }
                set
                {
                    if (ShowErrorMessage)
                    {
                        throw new ValidationException(message);
                    }
                }
            }
    Dans mon projet, démarré nativement en SL4, j'exécute le même code, avec la même classe sur un même TextBox... Et la : plantage de l'application sur le "throw new ValidationException(message)" avec pour message :

    l'exception ValidationException n'est pas gérée par l'utilisateur
    Quelqu'un a t il déjà eu ce souci ? à priori ceci fonctionnait très bien en SL3...

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Elle remonte jusqu'à Application_UnhandledException ou bien c'est en mode debug que tu tombes dessus ?

    Tu as bien mis tout le code dans ton binding (ValidatesOnException et NotifyOnValidationError) ?

    Si tu passes ton code en SL4 je te conseille d'utiliser la validation en utilisant INotifyDataErrorInfo, c'est beaucoup plus flexible et puissant (validation asynchrone par exemple).

  3. #3
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Alors ça plante sur la ligne "trow new ValidationException"... et j'ai tout mis sur true ValidatesOnException et NotifyOnValidationError.

    Cette classe que j'ai récupéré m'arrangeait car grâce aux méthodes d'extensions fournis je n'avais pas besoin de créer de classe métier (je sais pas si tu te souviens, je suis toujours sur mon projet "expérimental" d'un datagrid piloté par javascript ou php).

    Je vais tenter INotifyDataErrorInfo.

    Merci pour ta réponse encore une fois

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Quelqu'un a t il déjà eu ce souci ? à priori ceci fonctionnait très bien en SL3...
    Ca me paraît bizarre ton code, même en SL3. C'est bien avec du binding? D'après ce dont je me souvient, c'est que l'exception doit être "throwée" dans la propriété à afficher. Dans ton cas si c'est bien un textbox, ça devrait être une propriété qui justement fournit le texte à afficher dans le textbox (du coup une string surement).
    Vois l'exemple ici peut être.
    Sinon, même conseil que Skyounet, dans SL4, INotifyDataErrorInfo est bien plus puissant et flexible.

    Christophe

  5. #5
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Ok,
    J'écoute donc vos conseils et je passe avec IDataErrorInfo.

    Je vous rappelle que mon DataGrid est généré dynamiquement avec de l'injection de XAML.
    Voici un exemple d'injection dans le CellEditTemplate (texte brut) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    '<TextBox  x:Name="TxtNom" FontWeight="Bold" Margin="5,0,0,0" Text=\'{Binding nom, Mode=TwoWay, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, NotifyOnValidationError=True}\' />'

    Pour gérer les erreur j'ai crée une classe à l'arrache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        public class CustomValidation : IDataErrorInfo
        {
            public string nom { get; set; }
            public string Error
            {
                get { return null; }
            }
     
            public string this[string columnName]
            {
                get { return "Erreur dans ta mère !"; }
            }
         }
    Elle renvoie systématiquement une erreur, c'est juste pour tester.

    Et ça fonctionne.

    LE SOUCI est que je voudrais enlever :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public string nom { get; set; }
    Car tout est dynamique et configuré par javascript ou un autre langage en JSON. Je veux utiliser ma grille comme un "composant" externe.

    Donc voilà ma question clairement :

    Comment déclencher mes erreurs sans avoir les propriétés qui correspondent aux colonnes ?

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    J'ai pas compris ton problème où tu veux enlever la propriété.

    Détail important, l'interface à utiliser c'est INotifyDataErrorInfo (une version améliorée de IDataErrorInfo).

Discussions similaires

  1. Erreur sur IIS avec des cripts ASP
    Par Alin dans le forum ASP
    Réponses: 7
    Dernier message: 22/06/2004, 14h15
  2. Réponses: 5
    Dernier message: 17/06/2004, 23h38
  3. [Kylix] erreur time.sur kylix avec redhat 9.0
    Par sumco dans le forum EDI
    Réponses: 4
    Dernier message: 20/05/2004, 15h13
  4. Problème d'E.S. sur fichier avec open
    Par Bubonik software dans le forum C
    Réponses: 6
    Dernier message: 04/02/2004, 19h42
  5. Construire chemin sur bouton avec évt Javascript
    Par Ph. B. dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/05/2003, 10h26

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