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 :

Service WCF et Silverlight


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Par défaut Service WCF et Silverlight
    Bonjour,
    Mon problème est le suivant :
    j'ai un service WCF qui permet de lister des contrats à partir des Id d'un partenaire, je m'explique chaque partenaire est identifié par un Id et il a plusieurs contrats ,
    ces IdPartenaires sont stockés dans une liste qui passe en paramètre du service , voici l'exemple des contrats listés par IdPartenaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      void rechercherContrat()
            {
     sr.LoadContratResumeListByPartenaireListCompleted += new EventHandler<LoadContratResumeListByPartenaireListCompletedEventArgs>(sr_LoadContratResumeListByPartenaireListCompleted);
                sr.LoadContratResumeListByPartenaireListAsync(lstIdPartenaire);
            }
    Ces id de partenaires sont listés dans une listBox et leurs contrats correspondants sont stockés dans un Datagrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      void sr_LoadContratResumeListByPartenaireListCompleted(object sender, LoadContratResumeListByPartenaireListCompletedEventArgs e)
            {
                lstContrat = e.Result;
                gridContrat.ItemsSource = lstContrat;
              }
    ce que je veux faire , c'est que dans la liste qui contient les partenaires , je veux selectionner un partenaire et avoir dans le datagrid juste les contrats correspondant au partenaire selectionné dans la listBox
    Comment je peux résoudre ce problème ?
    SVP aidez moi
    j'ai essayé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (PartenaireResume p in lstParContrats.SelectedItems)
                {
                              sr.LoadContratResumeListByContactAsync(lstParContrats.SelectedItems.IndexOf(p.Id));
     
                }
    Mais je pense pas qu'il est fonctionnel
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Déjà ta fonction WCF une fois exécutée te permet de savoir à quel partenaire appartient tel ou tel contrat vu e que tu fais tu fous tes contrats dans une liste de façon indépendant du partenaire.

    Si j'étais la signature de ta fonction ne changerai pas mais par contre je renverrai une liste d'objet Partenaire et pour chaque instance de cet objet j'aurai une propriété type collection qui contiendra la liste de ses contrats.

    Une fois cela fait, dans ton code tu te crées un objet de type ICollectionView qui aura pour source le résultat de du retour de ta fonction WCF. Tu bindes cet objet à ton ListBox et tu mettras la propriété IsSynchronizedWithCurrentItem à true. Puis tu bindes la propriété ItemsSource de ta DataGrid que tu biendes à SelectedItem.Contrats de ta ListBox.

    Désolé j'ai pas d'exemple de code à te donner mais je pense avoir bien expliqué.

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Par défaut
    Bonjour,
    Tou d'abord je vous remercie pour votre réponse , mais je n'ai compris comment je dois procéder , déjà vous m'avez dit de binder les resultas de mon service WCF à la listBox alors que les résultats sont chargés dans le dataGrid et la listeBox contient leurs partenaires , autre chose la propriété IsSynchronizedWithCurrentItem sert à quoi?
    et si vous avez un exemple SVP donnez le moi
    P.S : les partenaires sont dans la listBox et les contrats dans le Datagrid , et tous les deux sont bindés à des champs des résultats obtenus
    Merci d'avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'aurais bien aimé te fournir un exemple mais pas pour le moment peut-être le soir

    Tes éléments sont bindés à des résultats récupérés à partir de l'appel de plusieurs appels WCF. Ce qui entraîne que tes partenaires et tes contrats n'ont aucune relations en mémoire.

    Ma méthode (que je t'ai proposée dans mon post précédent) te permet de faire un seul et unique appel WCF qui te chargerait les partenaires et pour chacun d'eux te charger aussi la liste de ces contrats. Ce post est bien explicite pour continuer ensuite.

    La propriété IsSynchronizedWithCurrentItem te permet en fait de synchroniser l'élément séléctionné dans ta ListBox avec la propriété CurrentItem de ton objet ICollectionView. Ainsi tout autre élément qui se binde sur cette propriété sera mis à jour automatiquement si la séléction de ta ListBox change. Dans ton cas à toi, la liste des contrats associés au partenaire sélectionné dans ta ListBox sera automatiquement mis à jour dans ta DataGrid.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Par défaut
    Au fait les service WCF sont déjà développé et je ne dois pas les toucher , dans ma partie d'application je consomme juste les services déjà developpés.
    Autre chose dans une autre interface j'ai besoin juste des partenaires , donc j'ai intéret à avoir 2 services chacun à charger des données
    est ce qu'il n'y a pas une méthode pour parcourir la listBox des partenaires et avoir l'idPartenaire qui est selectionné et remplir le dataGrid par ses contrats correspondants sans utiliser les services WCF, vu que j'ai les 2 collections , une contenant les partenaires et l'autre les contrats , juste en comparant les idPartenaires et ceux qui ont les mêmes seront listés.
    est ce que vous m'avez compris ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je vois.

    Donc tu restes sur ta méthode en bindant ta ListBox sur tes partenaires. Tu t'abonnes à l'évènement SelectionChanged de ta ListBox et dans le code-behind tu récupères la liste des contrats associés au partenaire sélectionné grâce à un appel WCF (j'espère que ça existe). Le résultat obtenu tu l'assignes à la propriété ItemsSource de ta DataGrid

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

Discussions similaires

  1. Partage de services WCF application Silverlight
    Par Bakura dans le forum Silverlight
    Réponses: 0
    Dernier message: 10/03/2012, 21h40
  2. Réponses: 6
    Dernier message: 04/08/2010, 15h21
  3. Service WCF et silverlight
    Par gatinamed dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 30/06/2010, 17h58
  4. Réponses: 1
    Dernier message: 01/02/2010, 11h57

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