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

C# Discussion :

combobox et datasource


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut combobox et datasource
    Bonsoir, je viens de tomber sur un problème assez épineux et étrange !
    en effet, j'ai créé des listes pour mes combobox, en tant que datasource.
    pour chacune de ces combobox, j'utilise la même classe pour la création d'item, et donc j'utilise les même proprités !
    la première des combobox suivantes fonctionne très bien. cependant, les autres ne passent pas (car les propriétés GetName et GetText sont les mêmes pour les 2).

    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
    // initialisation des combobox (pour le style)
                List<ComboBoxDataSourceClass> radar_style = new List<ComboBoxDataSourceClass>();
                radar_style.Add(new ComboBoxDataSourceClass("Area", "Zone"));
                radar_style.Add(new ComboBoxDataSourceClass("Line", "Ligne"));
                radar_style.Add(new ComboBoxDataSourceClass("Marker", "Marqueur"));
                RadarComboBox.DataSource = radar_style;
                RadarComboBox.DisplayMember = "GetName";
                RadarComboBox.ValueMember = "GetText";
     
                List<ComboBoxDataSourceClass> zone_style = new List<ComboBoxDataSourceClass>();
                zone_style.Add(new ComboBoxDataSourceClass("Circle", "Cercle"));
                zone_style.Add(new ComboBoxDataSourceClass("Polygon", "Polygone"));
                ZoneComboBox.DataSource = zone_style;
                ZoneComboBox.DisplayMember = "GetName";
                ZoneComboBox.ValueMember = "GetText";
     
                List<ComboBoxDataSourceClass> legende_style = new List<ComboBoxDataSourceClass>();
                legende_style.Add(new ComboBoxDataSourceClass("Circular", "Circulaire"));
                legende_style.Add(new ComboBoxDataSourceClass("Radial", "Radiale"));
                legende_style.Add(new ComboBoxDataSourceClass("Horizontal", "Horizontale"));
                LegendeComboBox.DataSource = legende_style;
                LegendeComboBox.DisplayMember = "GetName";
                LegendeComboBox.ValueMember = "GetText";
    j'ai changé l'ordre de création de mes combobox, c'est toujours la première qui est épargnées !

    comment puis-je y remédier ?
    Merci de m'aider

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Par défaut
    que veux tu dire exactement par "les autres ne passent pas"
    une erreur se produit ou elles ne se remplissent pas ?

    Moi j'ai essayé en copiant collant ton code et ça marche.

    Que contient ta classe ComboBoxDataSourceClass ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    Lorsque j'essaie d'utiliser les valeurs de la combobox, voici le message d'erreur que j'obtiens :

    La référence d'objet n'est pas définie à une instance d'un objet.
    quelque soit l'ordre dans lequel je cré mes listes, il n'y a que le premier qui fonctionne >_<
    je pense que c'est à cause du nom des propriétés utilisées, qui est la même pour les 3, mêmes si j'utilise des listes d'objets différentes :/

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    débug et dit nous sur quelle ligne il te sort la référence nulle

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    sur celle la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Categ_prod_ventesChart.Series["Series1"]["AreaDrawingStyle"] = ((ComboBoxDataSourceClass)(ZoneComboBox.SelectedItem)).GetName;
    mais celle-ci fonctionne, alors qu'elle est juste avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Categ_prod_ventesChart.Series["Series1"]["RadarDrawingStyle"] = ((ComboBoxDataSourceClass)(RadarComboBox.SelectedItem)).GetName;

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Par défaut
    Il s'agit bien du SelectedItem qui null ?

    A quel moment exécutes-tu ces lignes de code ?
    Est-ce dans un événement ?

  7. #7
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    tu as tout mis sauf le message d'erreur

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    Citation Envoyé par thor76160 Voir le message
    Lorsque j'essaie d'utiliser les valeurs de la combobox, voici le message d'erreur que j'obtiens :

    La référence d'objet n'est pas définie à une instance d'un objet.

    quelque soit l'ordre dans lequel je cré mes listes, il n'y a que le premier qui fonctionne >_<
    je pense que c'est à cause du nom des propriétés utilisées, qui est la même pour les 3, mêmes si j'utilise des listes d'objets différentes :/

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Par défaut
    quand précisément obtiens-tu ce message ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Par défaut
    je l'obtiens au lancement de ma form, car j'utilise cette ligne de code dans une fonction appelée dans le load.

    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
    private void Compte_rendu_ventesForm_Load(object sender, EventArgs e)
            {
                // initialisation du NumericUpDown (année)
                AnneeNumericUpDown.Value = DateTime.Now.Year;
                AnneeNumericUpDown.Maximum = DateTime.Now.Year;
                annee = int.Parse(AnneeNumericUpDown.Value.ToString());
     
                // initialisation des combobox (pour le style)
                List<ComboBoxDataSourceClass> radar_style = new List<ComboBoxDataSourceClass>();
                radar_style.Add(new ComboBoxDataSourceClass("Area", "Zone"));
                radar_style.Add(new ComboBoxDataSourceClass("Line", "Ligne"));
                radar_style.Add(new ComboBoxDataSourceClass("Marker", "Marqueur"));
                RadarComboBox.DataSource = radar_style;
                RadarComboBox.DisplayMember = "GetName";
                RadarComboBox.ValueMember = "GetText";
     
                List<ComboBoxDataSourceClass> zone_style = new List<ComboBoxDataSourceClass>();
                zone_style.Add(new ComboBoxDataSourceClass("Circle", "Cercle"));
                zone_style.Add(new ComboBoxDataSourceClass("Polygon", "Polygone"));
                ZoneComboBox.DataSource = zone_style;
                ZoneComboBox.DisplayMember = "GetName";
                ZoneComboBox.ValueMember = "GetText";
     
                List<ComboBoxDataSourceClass> legende_style = new List<ComboBoxDataSourceClass>();
                legende_style.Add(new ComboBoxDataSourceClass("Circular", "Circulaire"));
                legende_style.Add(new ComboBoxDataSourceClass("Radial", "Radiale"));
                legende_style.Add(new ComboBoxDataSourceClass("Horizontal", "Horizontale"));
                LegendeComboBox.DataSource = legende_style;
                LegendeComboBox.DisplayMember = "GetName";
                LegendeComboBox.ValueMember = "GetText";
     
                /*List<reunir> lesVentesAnnuelles = new List<reunir>();
                double[] yValues = new double[];
                string[] xValues = new string[];
                // Populate series data
                for (int i = 0; i <= lesVentesAnnuelles.Count; i++)
                {
                    //yValues[i] = lesVentesAnnuelles[i].
                    //xValues[i] = lesVentesAnnuelles[i].
                }
     
                double[] yValues = { 65.62, 75.54, 60.45, 34.73, 85.42, 55.9, 63.6, 55.1, 77.2 };
                string[] xValues = { "France", "Canada", "Germany", "USA", "Italy", "Spain", "Russia", "Sweden", "Japan" };
     
                Categ_prod_ventesChart.Series["Series1"].Points.DataBindXY(xValues, yValues);*/
     
                // Set selection
                RadarComboBox.SelectedIndex = 0;
                ZoneComboBox.SelectedIndex = 0;
                LegendeComboBox.SelectedIndex = 0;
     
                UpdateChartSettings();
            }
     
    private void UpdateChartSettings()
            {
                // titre de la page
                Titre_bilan_annuelLabel.Text = "Situation de votre entreprise pour l'année " + annee;
     
                // radar circulaire
                Categ_prod_ventesChart.Series["Series1"]["RadarDrawingStyle"] = ((ComboBoxDataSourceClass)(RadarComboBox.SelectedItem)).GetName;
                if (((ComboBoxDataSourceClass)(RadarComboBox.SelectedItem)).GetName == "Area")
                {
                    Categ_prod_ventesChart.Series["Series1"].BorderColor = Color.FromArgb(100, 100, 100);
                    Categ_prod_ventesChart.Series["Series1"].BorderWidth = 1;
                }
                else if (((ComboBoxDataSourceClass)(RadarComboBox.SelectedItem)).GetName == "Line")
                {
                    Categ_prod_ventesChart.Series["Series1"].BorderColor = Color.Empty;
                    Categ_prod_ventesChart.Series["Series1"].BorderWidth = 2;
                }
                else if (((ComboBoxDataSourceClass)(RadarComboBox.SelectedItem)).GetName == "Marker")
                {
                    Categ_prod_ventesChart.Series["Series1"].BorderColor = Color.Empty;
                }
                Categ_prod_ventesChart.Series["Series1"]["AreaDrawingStyle"] = ((ComboBoxDataSourceClass)(ZoneComboBox.SelectedItem)).GetName;
                Categ_prod_ventesChart.Series["Series1"]["CircularLabelsStyle"] = ((ComboBoxDataSourceClass)(LegendeComboBox.SelectedItem)).GetName;
                Categ_prod_ventesChart.Series["Series1"].LegendText = "Ventes de l'année " + annee;
            }

  11. #11
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par tontonks Voir le message
    quand précisément obtiens-tu ce message ?
    Exellente question !

    Et par ailleurs je te conseille d'assigner Display et Value Member AVANT le datasource, mon petit doigt me dit que c'est a la base du problème


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                RadarComboBox.DisplayMember = "GetName";
                RadarComboBox.ValueMember = "GetText";
     
                ZoneComboBox.DisplayMember = "GetName";
                ZoneComboBox.ValueMember = "GetText";
     
                RadarComboBox.DataSource = radar_style;
                ZoneComboBox.DataSource = zone_style;

  12. #12
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Je reprends l'exellente question de tontonks et je tu suggere une execution pas a pas pour y repondre

    Citation Envoyé par tontonks Voir le message
    quand précisément obtiens-tu ce message ?

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

Discussions similaires

  1. [C#] - Windows form - combobox et dataSource
    Par omedo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2011, 00h17
  2. C# 2008, combobox et datasource
    Par waspy59 dans le forum C#
    Réponses: 4
    Dernier message: 22/12/2009, 14h40
  3. Réponses: 6
    Dernier message: 21/10/2009, 17h39
  4. Réponses: 5
    Dernier message: 29/11/2006, 21h10
  5. [VB.Net] ComboBox et DataSource
    Par lacsap49 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/05/2006, 10h16

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