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

Windows Presentation Foundation Discussion :

gestion d'un treeview avec 2 types de données


Sujet :

Windows Presentation Foundation

  1. #1
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut gestion d'un treeview avec 2 types de données
    Bonjour à tous,

    j'ai besoin d'aide sur un problème de treeview, j'ai une classe VTSuiviBudjetAnnee qui possède une liste de VTSuiviBudjetMois qui elle même possède une liste d'organismeCollecteur.

    Je souhaite afficher dans les items parent les montants par mois et dans les items enfant de la treeview je veux afficher la liste des organisme et leur montant versé (1 par item), ci dessous mon code xaml:

    Code xml : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     <UserControl.Resources>
            <local:ConverterVisibility1 x:Key="ConverterVisibility" />
            <LinearGradientBrush x:Key="TreeViewItemBackground"  EndPoint="1,0.5" StartPoint="0,0.5">
                <!--<GradientStop Color="#FFA6CAEC" Offset="0"/>-->
                <GradientStop Color="#FFAFD0EE" Offset="1"/>
                <!--<GradientStop Color="#FFE4EFF8" Offset="0.498"/>-->
            </LinearGradientBrush>
     
            <DataTemplate x:Key="OrganismeCollecteurTemplate">
                <Border BorderBrush="AliceBlue" BorderThickness="1" CornerRadius="10"
                        Background="{StaticResource TreeViewItemBackground}" >
                    <StackPanel Orientation="Horizontal" Width="Auto">
                        <Label Width="160" Content="{Binding Path=NomOrganisme}" Foreground="DimGray" FontWeight="Medium" />
                        <Label Width="90" Content="{Binding Path=MontantMoisPercu}" ToolTip="{Binding Path=ToolTipMoisDeclare}" Foreground="DimGray" FontWeight="Medium" />
                        <Label Width="60" FontWeight="Medium" ToolTip="VT versé" />
                        <TextBox Width="60"></TextBox>
                        <Label Width="60"  ToolTip="VT reconstitué" ></Label>
                    </StackPanel>
                </Border>
            </DataTemplate>
     
            <DataTemplate x:Key="MontantMoisTemplate">
                <Border BorderBrush="AliceBlue" BorderThickness="1" CornerRadius="10"
                        Background="{StaticResource TreeViewItemBackground}" >
                    <StackPanel Orientation="Horizontal" Width="Auto">
                        <Label Width="160" Content="{Binding Path=MoisLong}" Foreground="DimGray" FontWeight="Medium" />
                        <Label Width="90" Content="{Binding Path=MontantMoisPercu}" ToolTip="{Binding Path=ToolTipMontantMois}" Foreground="DimGray" FontWeight="Medium" />
                    </StackPanel>
                </Border>
            </DataTemplate>
     
     
            <HierarchicalDataTemplate x:Key="MoisTemplate"
                                          ItemsSource="{Binding VTSuiviBudgetAnnee}"
                                          ItemTemplate="{StaticResource MontantMoisTemplate}">
                <Border x:Name="MoisTemplateBorder" BorderBrush="AliceBlue" 
                            BorderThickness="1" CornerRadius="10"
                            Background="{StaticResource TreeViewItemBackground}" >
     
                    <StackPanel Orientation="Horizontal">
                        <Label Width="80" Content="{Binding Path=MoisLong}" FontWeight="Medium" FontFamily="Arial" />
                        <Label Width="80" Content="{Binding Path=MontantMoisPercu}" FontWeight="Medium" FontFamily="Arial" />
                        <Label Width="60" FontWeight="Medium"  ToolTip="VT versé"></Label>
                        <Label Width="60" ToolTip="VT reconstitué"></Label>
                    </StackPanel>
                </Border>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate x:Key="OCTemplate"
                                          ItemsSource="{Binding VTSuiviBudgetMois}"
                                          ItemTemplate="{StaticResource OrganismeCollecteurTemplate}">
                <Border x:Name="MoisTemplateBorder" BorderBrush="AliceBlue" 
                            BorderThickness="1" CornerRadius="10"
                            Background="{StaticResource TreeViewItemBackground}" >
     
                    <StackPanel Orientation="Horizontal">
                        <Label Width="80" Content="{Binding Path=NomOrganisme}" FontWeight="Medium" FontFamily="Arial" />
                        <Label Width="80" Content="{Binding Path=MontantPercu}" FontWeight="Medium" FontFamily="Arial" />
                        <Label Width="60" FontWeight="Medium"  ToolTip="VT versé"></Label>
                        <Label Width="60" ToolTip="VT reconstitué"></Label>
                    </StackPanel>
                </Border>
            </HierarchicalDataTemplate>
     
        </UserControl.Resources>
     
                                              .....
     
     <StackPanel Grid.Row="1" Grid.Column="0" Orientation="Vertical">
     
                    <TreeView Name="treeViewVersement2" Width="500" 
                              Margin="0,0,0,0"  
                              ItemsSource="{Binding}"
                              ItemTemplate="{StaticResource MoisTemplate}"
                              TreeViewItem.Expanded="treeViewVersementItem_Expanded"
                              TreeViewItem.Collapsed="treeViewVersementItem_Collapsed">
                    </TreeView>
     
                </StackPanel>
                <Label Grid.Row="0" Grid.Column="1" FontWeight="Bold"></Label>
                <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Vertical">
                    <TreeView Name="treeViewVersement1" Width="500"
                                Margin="0,0,0,0" 
                                ItemsSource="{Binding}"
                                ItemTemplate="{StaticResource MoisTemplate}"
                                TreeViewItem.Expanded="treeViewVersementItem_Expanded"
                                TreeViewItem.Collapsed="treeViewVersementItem_Collapsed"/>
                </StackPanel>

    et ci-dessous mon code behind:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
        public partial class SuiviBudgetReconstitutionVT : UserControl
        {
     
            private VTSuiviBudgetAnnee _suiviBudgetAnneSelection;
            private VTSuiviBudgetAnnee _suiviBudgetAnnePrec;
            public SuiviBudgetReconstitutionVT()
            {
                InitializeComponent();
                this.Loaded += new RoutedEventHandler(SuiviBudget_Loaded);
            }
            /// <summary>
            /// Chargement de la page
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void SuiviBudget_Loaded(object sender, RoutedEventArgs e)
            {
                try
                {
                    // Tab VT perçu
                    string annee = DateTime.Now.Year.ToString();
                    AfficherListeAnnee(annee);
     
                }
                catch (Exception erreur)
                {
                    throw new Exception("Impossible de charger les données " + erreur.Message);
                }
            }
     
            private void treeViewVersementItem_Expanded(object sender, RoutedEventArgs e)
            {
     
            }
     
            private void treeViewVersementItem_Collapsed(object sender, RoutedEventArgs e)
            {
     
            }
     
            private void listViewAnneeVersement_SelectionChanged(object sender, RoutedEventArgs e)
            {
     
               CME_VT_MontantVerse selectAnne = (CME_VT_MontantVerse)listViewAnneeVersement.SelectedValue;
               string annee = selectAnne.annee.ToString();
               string annePrec = (Convert.ToInt32(annee) - 1).ToString();
               _suiviBudgetAnneSelection = new VTSuiviBudgetAnnee(annee);
               _suiviBudgetAnnePrec = new VTSuiviBudgetAnnee(annePrec);
               InitialiserTreeView();
            }
     
            #region Methode
     
            private void AfficherListeAnnee(string pAnnee)
            {
                 ObservableCollection<CME_VT_MontantVerse> listeVersementParOCAnneeMois = new ObservableCollection<CME_VT_MontantVerse>();
     
                 for (int i = Convert.ToInt32(pAnnee); i > 2005; i--)
                 {
                     listeVersementParOCAnneeMois.Add(new CME_VT_MontantVerse(1, i.ToString(), "1"));
                 }
                 listViewAnneeVersement.DataContext = listeVersementParOCAnneeMois;
            }
     
            private void InitialiserTreeView()
            {
                treeViewVersement2.Items.Clear();
                treeViewVersement1.Items.Clear();
                treeViewVersement1.DataContext = _suiviBudgetAnneSelection;
                treeViewVersement2.DataContext = _suiviBudgetAnnePrec;
                    for (int i = 0; i < _suiviBudgetAnneSelection.ListeMois.Count; i++)
                    {
                        treeViewVersement1.Items.Add(_suiviBudgetAnneSelection.ListeMois[i]);
                    }
     
                for (int i = 0; i < _suiviBudgetAnnePrec.ListeMois.Count; i++)
                {
                    treeViewVersement2.Items.Add(_suiviBudgetAnnePrec.ListeMois[i]);
                }
     
     
            }

    j'affiche bies tous les items parents (mois et montant versé) mais les items enfant ne s'affichent pas. J'ai cherché depuis 2 jours sur des forums mais pas de solutions intéressante.

    cordialement

  2. #2
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut
    J'ai modifié mon codebehind ci-dessous

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
        public partial class SuiviBudgetReconstitutionVT : UserControl
        {
     
            private ObservableCollection<VTSuiviBudgetMois> _suiviBudgetAnneSelection;
            private ObservableCollection<VTSuiviBudgetMois> _suiviBudgetAnnePrec;
            public SuiviBudgetReconstitutionVT()
            {
                InitializeComponent();
                this.Loaded += new RoutedEventHandler(SuiviBudget_Loaded);
            }
            /// <summary>
            /// Chargement de la page
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void SuiviBudget_Loaded(object sender, RoutedEventArgs e)
            {
                try
                {
                    // Tab VT perçu
                    string annee = DateTime.Now.Year.ToString();
                    _suiviBudgetAnnePrec = new ObservableCollection<VTSuiviBudgetMois>();
                    _suiviBudgetAnneSelection = new ObservableCollection<VTSuiviBudgetMois>();
                    AfficherListeAnnee(annee);
     
                }
                catch (Exception erreur)
                {
                    throw new Exception("Impossible de charger les données " + erreur.Message);
                }
            }
     
            private void treeViewVersementItem_Expanded(object sender, RoutedEventArgs e)
            {
     
            }
     
            private void treeViewVersementItem_Collapsed(object sender, RoutedEventArgs e)
            {
     
            }
     
            private void listViewAnneeVersement_SelectionChanged(object sender, RoutedEventArgs e)
            {
                treeViewVersement1.Items.Clear();
                treeViewVersement2.Items.Clear();
               CME_VT_MontantVerse selectAnne = (CME_VT_MontantVerse)listViewAnneeVersement.SelectedValue;
               string annee = selectAnne.annee.ToString();
               string annePrec = (Convert.ToInt32(annee) - 1).ToString();
               DataTable listeMontantMois = CAD_VT_MontantVerse_ORACLE.MontantVerseParMois(annePrec, "");
               foreach (DataRow ligne in listeMontantMois.Rows)
               {
                   VTSuiviBudgetMois montantMois = new VTSuiviBudgetMois();
                   montantMois.Mois = ligne["mois"].ToString();
                   montantMois.MontantMoisPercu = Convert.ToDouble(ligne["MontantVerse"]);
                   montantMois.MoisLong = ConversionMois(montantMois.Mois);
                   montantMois.ListeMontantVerse = new ObservableCollection<CME_VT_MontantVerse>();
                   montantMois.ListeMontantVerse = CME_VT_MontantVerse.ListeMontantsVerses(0, annePrec, ligne["mois"].ToString(), "");
                  /* if (ligne["signeDifferenceReconstitue"].ToString() != "")
                   {
                       if (ligne["signeDifferenceReconstitue"].ToString() == "-")
                       {
                           montantMois.MontantMoisReconstitue = montantMois.MontantMoisPercu - Convert.ToDouble(ligne["montantDifferenceReconstitue"]);
                       }
                       else
                       {
                           montantMois.MontantMoisReconstitue = montantMois.MontantMoisPercu + Convert.ToDouble(ligne["montantDifferenceReconstitue"]);
                       }
                   }*/
                   _suiviBudgetAnnePrec.Add(montantMois);
               }
               treeViewVersement2.DataContext = _suiviBudgetAnnePrec;
     
               listeMontantMois = CAD_VT_MontantVerse_ORACLE.MontantVerseParMois(annee, "");
               foreach (DataRow ligne in listeMontantMois.Rows)
               {
                   VTSuiviBudgetMois montantMois = new VTSuiviBudgetMois();
                   montantMois.Mois = ligne["mois"].ToString();
                   montantMois.MontantMoisPercu = Convert.ToDouble(ligne["MontantVerse"]);
                   montantMois.MoisLong = ConversionMois(montantMois.Mois);
                   montantMois.ListeMontantVerse = new ObservableCollection<CME_VT_MontantVerse>();
                   montantMois.ListeMontantVerse = CME_VT_MontantVerse.ListeMontantsVerses(0, annee, ligne["mois"].ToString(), "");
                   /* if (ligne["signeDifferenceReconstitue"].ToString() != "")
                    {
                        if (ligne["signeDifferenceReconstitue"].ToString() == "-")
                        {
                            montantMois.MontantMoisReconstitue = montantMois.MontantMoisPercu - Convert.ToDouble(ligne["montantDifferenceReconstitue"]);
                        }
                        else
                        {
                            montantMois.MontantMoisReconstitue = montantMois.MontantMoisPercu + Convert.ToDouble(ligne["montantDifferenceReconstitue"]);
                        }
                    }*/
                   _suiviBudgetAnneSelection.Add(montantMois);
               }
               treeViewVersement1.DataContext = _suiviBudgetAnneSelection;
     
     
     
            }
     
            #region Methode
     
            private void AfficherListeAnnee(string pAnnee)
            {
                 ObservableCollection<CME_VT_MontantVerse> listeVersementParOCAnneeMois = new ObservableCollection<CME_VT_MontantVerse>();
     
                 for (int i = Convert.ToInt32(pAnnee); i > 2005; i--)
                 {
                     listeVersementParOCAnneeMois.Add(new CME_VT_MontantVerse(1, i.ToString(), "1"));
                 }
                 listViewAnneeVersement.DataContext = listeVersementParOCAnneeMois;
            }

  3. #3
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut
    je vais rajouter un peu de commentaire, en fait je souhaite afficher la liste des mois avec son montant dans chaque items (1 mois = 1 item), puis en enfant des ces items le détaill de ce montant avec un item enfant = un organisme avec son montant:

    exemple:

    --> Janvier 1500 €
    ---> Urssaff Nord 800 €
    ---> Urssaff Paris 700€
    --> Février 8500 €
    ---> Urssaff Finistere 5000€
    ---> Urssaff Perpignan 3000€
    ----> Urssaff Marseille 500€

    voici la classe VTSuiviBudget:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     class VTSuiviBudgetMois
        {
     
            private string _mois;
            public string Mois
            {
                get { return _mois; }
                set { _mois = value; }
            }
     
            private string _moisLong;
            public string MoisLong
            {
                get { return _moisLong; }
                set { _moisLong = value; }
            }
     
            private double _montantMoisPercu;
            public double MontantMoisPercu
            {
                get { return _montantMoisPercu; }
                set { _montantMoisPercu = value; }
            }
     
            private double _montantDiffReconstitue;
            public double MontantDiffReconstitue
            {
                get { return _montantDiffReconstitue; }
                set { _montantDiffReconstitue = value; }
            }
     
            private double _montantMoisReconstitue;
            public double MontantMoisReconstitue
            {
                get { return _montantMoisReconstitue; }
                set { _montantMoisReconstitue = value; }
            }
     
            private ObservableCollection<CME_VT_MontantVerse> _listeMontantVerse;
            public ObservableCollection<CME_VT_MontantVerse> ListeMontantVerse
           {
               get { return _listeMontantVerse; }
               set { _listeMontantVerse = value; }
           }
     
     
            public VTSuiviBudgetMois()
            {
                ListeMontantVerse = new ObservableCollection<CME_VT_MontantVerse>();
            }
    comme vous le voyez la colection d'objet VTsuiviBudgetMois sert pour les items parent et la collection d'objet CME_VT_MontantVerse pour les items enfant, mon treeview affiche bien les items parent mais pas les enfants

  4. #4
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut
    j'ai enfin trouvé la solution:

    Code xaml : 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
    36
    37
     
    <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Vertical">
                    <TreeView Name="treeViewVersement1" Width="500"
                                Margin="0,0,0,0" 
                                ItemsSource="{Binding}"
                              ScrollViewer.CanContentScroll="True"
                                TreeViewItem.Expanded="treeViewVersementItem_Expanded"
                                TreeViewItem.Collapsed="treeViewVersementItem_Collapsed">
                        <TreeView.ItemTemplate>
                            <HierarchicalDataTemplate ItemsSource="{Binding Path=ListeMontantVerse}">
                                <Border x:Name="MoisTemplateBorder" BorderBrush="AliceBlue" 
                            BorderThickness="1" CornerRadius="10"
                            Background="{StaticResource TreeViewItemBackground}" >
                                    <StackPanel Orientation="Horizontal">
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="80"></ColumnDefinition>
                                                <ColumnDefinition  Width="80"></ColumnDefinition>
                                                <ColumnDefinition  Width="80"></ColumnDefinition>
                                                <ColumnDefinition  Width="80"></ColumnDefinition>
                                                <ColumnDefinition  Width="80"></ColumnDefinition>
                                            </Grid.ColumnDefinitions>
                                            <Label Grid.Column="0"   Width="80" Content="{Binding Path=MoisLong}" FontWeight="Medium" FontFamily="Arial" />
                                            <Label Grid.Column="1"   Width="80" Content="{Binding Path=MontantMoisPercu}" FontWeight="Medium" FontFamily="Arial" />
                                            <Label Grid.Column="2"   Width="80" Content="{Binding Path=MontantMoisReconstitue}" FontWeight="Medium" FontFamily="Arial" />
                                            <Label Grid.Column="3"   Width="80" Content="{Binding Path=MontantDiffReconstitue}" FontWeight="Medium" FontFamily="Arial"/>
                                            <Label Grid.Column="0"   Width="80" Content="{Binding Path=NomOrganisme}" FontWeight="Medium" FontFamily="Arial" />
                                            <Label Grid.Column="1"   Width="80" Content="{Binding Path=MontantOCPercu}" FontWeight="Medium" FontFamily="Arial" />
                                            <Label Grid.Column="2"   Width="80" Content="{Binding Path=MontantMoisReconstitueOC}" FontWeight="Medium" FontFamily="Arial" />
                                            <TextBox Grid.Column="3"  Width="80" Text="{Binding Path=MontantDiffReconstitueOC,  UpdateSourceTrigger=PropertyChanged}" Name="tbxTV1MontantDiff" TextChanged="tbxTV1MontantDiff_TextChanged"></TextBox>
                                          </Grid>
                                    </StackPanel>
                                </Border>
                            </HierarchicalDataTemplate>
                        </TreeView.ItemTemplate>
                    </TreeView>
                </StackPanel>

    j'ai enlevé aussi les DataTemplate en tête du XAML

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

Discussions similaires

  1. haxe - array multidimensionnel avec 2 types de données
    Par Haxor668 dans le forum Flash/Flex
    Réponses: 2
    Dernier message: 28/04/2009, 19h51
  2. [Source] Nourrir un TreeView avec une base de données
    Par zooffy dans le forum Contribuez
    Réponses: 12
    Dernier message: 08/03/2008, 04h58
  3. Réponses: 2
    Dernier message: 25/10/2007, 09h41
  4. Réponses: 3
    Dernier message: 04/04/2007, 11h25
  5. treeview avec une base de donnée Access
    Par yannba dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/01/2006, 12h49

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