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 :

WCF Data Service : remplir une liste par des String


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut WCF Data Service : remplir une liste par des String
    Bonjour,

    je développe une application avec silverlight et WCF Data Service, je trouve un grand souci pour alimenter une comboBox à partir du champ Civilité de ma table Usager.

    ma fonction est la suivante:
    Code c# : 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
     
    public void GetCivilite(System.Windows.Controls.ComboBox cmbCivilite)
            {
                try
                {
                    cmb = cmbCivilite;
     
                    var req = (from user in proxy.Usager
                               select user.Civilite
                               .Distinct()
                              );
                    DataServiceQuery<String> userQuery = (DataServiceQuery<String>)req;
                    userQuery.BeginExecute(new AsyncCallback(OnQueryComplete), req);
     
               }
                catch (DataServiceQueryException ex)
                {
                    throw ex;
                }
     
            }
     
    private void OnQueryComplete(IAsyncResult result)
            {
     
     
                DataServiceQuery<String> query = (DataServiceQuery<String>)result.AsyncState;
                cmb.ItemsSource = query.EndExecute(result).ToList();
            }

    lors de l'exécution il me plante sur la ligne de BeginExecute avec l'erreur suivante:

    System.InvalidCastException: Impossible d'effectuer un cast de l'objet de type 'DataServiceOrderedQuery[System.Collections.Generic.IEnumerable`1[System.Char]]' en type 'System.Data.Services.Client.DataServiceQuery`1[System.String]'.
    sachant que j'ai aucun souci si le type de retour de la requete est un objet !! j'ai l'impression que les types primitives posent problème.

    Avez vous une idée !

  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
    C'est ton .Distinct qui est au mauvais endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var req = (from user in proxy.Usager
                               select user.Civilite                           
                              ).Distinct();
    Dans ton code tu faisait un distinct sur le champs Civilite, ca te renvoyait donc un IEnumerable<char>.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut
    Merci Skyounet pour ta réponse, en faisant comme t'as dis j'ai une autre exception:

    System.NotSupportedException
    La méthode 'Distinct' n'est pas prise en charge.

  4. #4
    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
    Citation Envoyé par safisafi Voir le message
    Merci Skyounet pour ta réponse, en faisant comme t'as dis j'ai une autre exception:

    System.NotSupportedException
    La méthode 'Distinct' n'est pas prise en charge.
    Bizarre, le distinct est bien supporte par SQL normalement.

    Bref enleve le et rajoute le sur cette ligne a la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query.EndExecute(result).Distinct().ToList();

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut
    L'exception System.NotSupportedException n'a pas été gérée par le code utilisateur

    Les propriétés de navigation peuvent uniquement être sélectionnées à partir d'une seule ressource. Spécifiez un prédicat de clé pour restreindre le jeu d'entités à une seule instance.

    je commence à me désespérer

  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
    Bon et si tu mets pas de Distinct nulle part ca fonctionne ?

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut
    non toujours la même erreur, puisque la ligne qui pose problème est:
    userQuery.BeginExecute(new AsyncCallback(OnQueryComplete), req); peut être ce n'est pas de cette façon qu'il faut appeler le BeginExecute !

  8. #8
    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
    Regarde comment je fais sur cet article pour voir si y'a une difference

    http://broux.developpez.com/articles...taservices/#L6

Discussions similaires

  1. remplir une combobox par des lignes
    Par Axiome dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/12/2008, 23h30
  2. Remplir une liste avec des noms de fichiers
    Par Claude_Azoulai dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/09/2007, 08h00
  3. Réponses: 2
    Dernier message: 26/05/2007, 17h28
  4. Remplir une Liste par SQL ?
    Par Zigouigoui dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 03/12/2005, 17h08

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