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 :

Problème affichage d'un résultat 2 fois et non affichage des images


Sujet :

Silverlight

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 207
    Points : 60
    Points
    60
    Par défaut Problème affichage d'un résultat 2 fois et non affichage des images
    Bonjour, tout le monde, j'ai un probleme en silverlight en effet je fais appel à plusieurs méthodes me permettant d'ajouter des informations dans un objet FondEcran pour ensuite afficher le tout dans une listbox
    ces méthodes me permettent de faire des requetes au sein de la base de données, les images sont enregistrés en tableau de byte.

    Voici un extrait de mon code c# :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    void client_GetFondsEcranPDACompleted(object sender, SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs e)
            {
     
                ServiceWCF.ServiceWCFClient client = new SilverlightApplication2.ServiceWCF.ServiceWCFClient();
                client.GetFondsEcranPDACompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs>(client_GetFondsEcranPDACompleted);           
                String[] FondsEcran;
                FondsEcran = e.Result.ToArray();        
                client.GetIdImageFondEcranCompleted += new EventHandler<SilverlightApplication2.ServiceWCF.GetIdImageFondEcranCompletedEventArgs>(client_GetIdImageFondEcranCompleted);    
                for (int i = 0; i < FondsEcran.Length; i++)
                {
                    String NomFondsEcran = FondsEcran[i];
                    FondEcran FdE = new FondEcran() { Nom = NomFondsEcran };
                    client.GetIdImageFondEcranAsync(NomFondsEcran, FdE);            
                }
     
            }
     
            void client_GetIdImageFondEcranCompleted(object sender, SilverlightApplication2.ServiceWCF.GetIdImageFondEcranCompletedEventArgs e)
            {
                ServiceWCF.ServiceWCFClient client = new SilverlightApplication2.ServiceWCF.ServiceWCFClient();
                client.GetIdImageFondEcranCompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetIdImageFondEcranCompletedEventArgs>(client_GetIdImageFondEcranCompleted);           
                FondEcran FdE = e.UserState as FondEcran;
                Decimal Id = e.Result;
                FdE.Id = Id;
                client.GetImageCompleted += new EventHandler<SilverlightApplication2.ServiceWCF.GetImageCompletedEventArgs>(client_GetImageCompleted);
                client.GetImageAsync(Id, FdE);
            }
            void client_GetImageCompleted(object sender, SilverlightApplication2.ServiceWCF.GetImageCompletedEventArgs e)
            {
                ServiceWCF.ServiceWCFClient client = new SilverlightApplication2.ServiceWCF.ServiceWCFClient();
                client.GetImageCompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetImageCompletedEventArgs>(client_GetImageCompleted);                  
                FondEcran FdE = e.UserState as FondEcran;
                FdE.Image = e.Result;
                ListBoxFondsEcran.Items.Add(FdE);
            }
    et mon code xaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ListBox Height="157" HorizontalAlignment="Center" x:Name="ListBoxFondsEcran" VerticalAlignment="Top" Width="508" ScrollViewer.VerticalScrollBarVisibility="Auto" BorderBrush="{x:Null}" ScrollViewer.HorizontalScrollBarVisibility="Auto" Style="{StaticResource IziBlackStyleListBox}" HorizontalContentAlignment="Center" ItemsSource="{Binding}" Foreground="White" Background="#FFE86868">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Width="109">
                                        <Border BorderThickness="3" CornerRadius="3" Background="White" BorderBrush="white">
                                                <Image Source="{Binding Image, Converter={StaticResource ByteArrayToImageConverter}}" Height ="100" HorizontalAlignment="center" VerticalAlignment="center"/>
                                        </Border>
                                        <TextBlock Text="{Binding Nom}" HorizontalAlignment="center" VerticalAlignment="center"/>
                                    </StackPanel>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
    j'ai ajouté au tout debut de mon code xaml en ressource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <navigation:Page.Resources>
            <local1:ByteArrayToImageConverter x:Key="ByteArrayToImageConverter" />
            </navigation:Page.Resources>
    Je n'ai pas d'erreur de syntaxe.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Ok mais c'est quoi le pb/l'erreur ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 207
    Points : 60
    Points
    60
    Par défaut
    Les images ne s'affichent pas dans la listbox et a chaque fois j'ai deux fois le mme resultat qui s'affiche par exemple si j'ai un seul résultat il va s'afficher deux fois

  4. #4
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Bonjour,

    tu peux commencer par nettoyer correctemment ton événement Completed

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void client_GetFondsEcranPDACompleted(object sender, SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs e)
            {
                ServiceWCF.ServiceWCFClient client = new SilverlightApplication2.ServiceWCF.ServiceWCFClient();
                client.GetFondsEcranPDACompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs>(client_GetFondsEcranPDACompleted);
    ...
    }
    doit devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void client_GetFondsEcranPDACompleted(object sender, SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs e)
            {
                ServiceWCF.ServiceWCFClient client = sender as SilverlightApplication2.ServiceWCF.ServiceWCFClient;
                client.GetFondsEcranPDACompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs>(client_GetFondsEcranPDACompleted);
    ...
    }

  5. #5
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ServiceWCF.ServiceWCFClient client = new SilverlightApplication2.ServiceWCF.ServiceWCFClient();
    client.GetFondsEcranPDACompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetFondsEcranPDACompletedEventArgs>(client_GetFondsEcranPDACompleted);
    Es tu sûr de la viabilité de ce code ?
    Pourquoi retirer un handler sur un objet nouvellement créé ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FondEcran FdE = new FondEcran() { Nom = NomFondsEcran };
    client.GetIdImageFondEcranAsync(NomFondsEcran, FdE);
    Pourquoi dupliquer l'information "Nom" ?

    Et pourquoi au moment de la récupération du fond d'écran ne pas récupérer toutes les informations nécessaires sans avoir besoin de refaire un appel à un web service ?

    Pourrais tu montrer le code de client_GetIdImageFondEcranCompleted ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 207
    Points : 60
    Points
    60
    Par défaut
    je fais appel à plusieurs services car je sais pas comment recuperer dans un meme méthode un tableau de byte et des chaines de caractere

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 207
    Points : 60
    Points
    60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void client_GetIdImageFondEcranCompleted(object sender, SilverlightApplication2.ServiceWCF.GetIdImageFondEcranCompletedEventArgs e)
            {
                ServiceWCF.ServiceWCFClient client = sender as SilverlightApplication2.ServiceWCF.ServiceWCFClient;
                client.GetIdImageFondEcranCompleted -= new EventHandler<SilverlightApplication2.ServiceWCF.GetIdImageFondEcranCompletedEventArgs>(client_GetIdImageFondEcranCompleted);           
                FondEcran FdE = e.UserState as FondEcran;
                Decimal Id = e.Result;
                FdE.Id = Id;
                client.GetImageCompleted += new EventHandler<SilverlightApplication2.ServiceWCF.GetImageCompletedEventArgs>(client_GetImageCompleted);
                client.GetImageAsync(Id, FdE);
            }

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par maxwel56 Voir le message
    je fais appel à plusieurs services car je sais pas comment recuperer dans un meme méthode un tableau de byte et des chaines de caractere
    Ben renvoie une classe qui contient le 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [DataContract]
    public class FondDecran
    {
       [DataMember]
       public byte[] Image {get;set;}
     
       [DataMember]
       public string Nom {get;set;}
    }

Discussions similaires

  1. [Vxi3] Problème d'affichage d'un résultat de formule
    Par asiane dans le forum Deski
    Réponses: 5
    Dernier message: 11/04/2015, 17h14
  2. [MySQL] Affichage de résultat plusieurs fois
    Par yotman dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 14/06/2013, 12h42
  3. Réponses: 20
    Dernier message: 23/07/2012, 15h32
  4. Réponses: 3
    Dernier message: 11/04/2012, 12h00
  5. [Oracle] Problème d'affichage d'un résultat de requête simple
    Par Mikl-Dba dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/09/2011, 10h34

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