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 :

Récupérer une List<string>


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Récupérer une List<string>
    Bonjour,

    Alors voilà j'ai un petit problème je ne sais pas comment récupérer ma list que je retourne de ma fonction pour afficher les données dans un DataGridView.
    Voilà le code de ma fonction qui retourne une List
    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
     
     
     public List<string>[] Select()
            {
                string query = "SELECT * FROM projetmdp";
     
                // Création de list pour les résultats
                List<string>[] list = new List<string>[4];
                list[0] = new List<string>();
                list[1] = new List<string>();
                list[2] = new List<string>();
                list[3] = new List<string>();
     
                MySqlCommand cmd = new MySqlCommand(query, connection);
                MySqlDataReader dataReader = cmd.ExecuteReader();
     
                // Lecture des données puis on les stocks dans les list
                while (dataReader.Read())
                {
     
                    list[0].Add(dataReader["Id"] + "");
                    list[1].Add(dataReader["Site"] + "");
                    list[2].Add(dataReader["Username"] + "");
                    list[3].Add(dataReader["Password"] + "");
                }
     
                dataReader.Close();
                // On ferme la connection
                this.CloseConnection(); 
     
                return list;
            }
    Pour afficher dans le DataGridView je pensais faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    DataTable table = new DataTable();
     
    table.Columns.Add("Id", typeof(int));
    table.Columns.Add("Site", typeof(string));
    table.Columns.Add("Username", typeof(string));
    table.Columns.Add("Password", typeof(string));
     
    dataGridViewDB.DataSource = table;
    Bien sûr je pensais ajouter ma list que je récupére de ma fonction à la table.

    Merci de votre aide,

    Cordialement.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Premièrement dans ce contexte, une liste n'est pas utile. On utilise une liste quand le nombre d'éléments n'est pas fixe.

    Dans ce cas-ci, tu serais aussi bien de définir une classe avec 4 propriétés et retourner une instance de cette classe.

    Ensuite il suffit d'invoquer les propriétés et en transférer les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.Columns.Add(MonObject.ID, typeof(int));

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci pour cette réponse.
    J'ai oublié de préciser je suis déjà dans une class, j'ai donc rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public int Id;
    public string site;
    public string Username;
    public string Password;
    En fait je comprends pas comment je remplis les donnée de ma table dans les attributs ?

    Cordialement

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Babyneedle Voir le message
    Ensuite il suffit d'invoquer les propriétés et en transférer les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.Columns.Add(MonObject.ID, typeof(int));
    Completement d'accord pour la classe mais pour le datagrid, je ferais une bindingList<> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var taListe = new BindingList<MyClass>();
    taListe.Add(obj);
    DataGridView.DataSource = taListe

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci pour votre aide, mais je n'ai pas compris désolé.

    Cordialement

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    Voici ce que je ferais :
    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
     
    public IList<string> Select()
            {
                string query = "SELECT * FROM projetmdp";
     
                // Création de liste pour les résultats
                var maListe = new List<string>();
     
     
                MySqlCommand cmd = new MySqlCommand(query, connection);
                MySqlDataReader dataReader = cmd.ExecuteReader();
     
                // Lecture des données puis on les stocks dans les list
                while (dataReader.Read())
                {
    //Création d'un nouvel objet et attribution des valeurs lues a partir du
    //datareader
                    var monObjet = new MyClass();
                    monObjet.Id = dataReader["Id"]
                    monObjet.Site= dataReader["Site"]
                    monObjet.Username= dataReader["Username"]
                    monObjet.Password= dataReader["Password"]
    //Ajout de l'objet a la liste
                    maListe.Add(monObjet)
                }
                dataReader.Close();
                // On ferme la connection
                this.CloseConnection(); 
                return maListe;
    ici ta méthode retourne une liste d'objet du type de ta classe. Il suffit juste d'associer ta liste a un datasource d'un datagrid et le tour est joué

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    L'avantage d'une BindingList permet que lorsqu'un objet est ajouté ou retiré de ta liste, le datagrid est rafraichi automatiquement(grace aux evenements)

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Ah d'accord, merci pour toute ses informations je vais essayer ça et je vous retiens au courant.

    Cordialement,

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    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
     
    public IList<string> Select()
            {
                string query = "SELECT * FROM projetmdp";
     
                // Création de liste pour les résultats
                var maListe = new List<DBmysql>();
     
     
                MySqlCommand cmd = new MySqlCommand(query, connection);
                MySqlDataReader dataReader = cmd.ExecuteReader();
     
                // Lecture des données puis on les stocks dans les list
                while (dataReader.Read())
                {
                    //Création d'un nouvel objet et attribution des valeurs lues a partir du datareader
                    var monObjet = new DBmysql();
                    monObjet.Id = Convert.ToInt32(dataReader["Id"]);
                    monObjet.Site = dataReader["Site"].ToString();
                    monObjet.Username = dataReader["Username"].ToString();
                    monObjet.Password = dataReader["Password"].ToString();
                    //Ajout de l'objet a la liste
                    maListe.Add(monObjet);
                }
                dataReader.Close();
                // On ferme la connection
                this.CloseConnection();
     
                return maListe;
            }
    Voilà j'ai modifier un peu le code et j'ai une erreur de compilation pour le return maList, il me dit :

    Erreur 1 Impossible de convertir implicitement le type 'System.Collections.Generic.List<projetmdp.DBmysql>' en 'System.Collections.Generic.IList<string>'. Une conversion explicite existe (un cast est-il manquant*?

    Une idée ? Merci pour votre aide,

    Cordialement

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    Attention à la signature de ta méthode car dans le cas présent elle retourne une liste de string :

    Citation Envoyé par ApprentiProgrammeur Voir le message
    public IList<string> Select()
    Dans ton code tu créé une liste de la classe DBmysql, tu dois par conséquent retourner une liste de ce type, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public IList<DBmysql> Select()
    et ça ne changera rien pour ton datagrid

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci pour toute ses informations. Pour l'affichage je verrais ça demain je pense,
    je vous retiens au courant si je rencontre des difficultés.

    cordialement,

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    Au passage, si je peux te donner un petit conseil, fais attention aux nommage de tes objets et de tes méthodes : soit plus explicite:

    au lieu de "Select" (on sait pas quoi) utilise GetMySitesWebInfos(), au moins tu sais ce que ta méthode fais.
    De même pour tes objets...

  13. #13
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci pour vos conseils j'en tiendrais compte. Par contre pour afficher dans le dataGrigView je suis complètement perdu il faut pas faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    dataGridViewDB.DataSource = db.Select();
    Je comprends pas l'utilisation des DataGridView c'est la première fois que je les utilises.

    Merci de votre aide.

    Cordialement,

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 75
    Points
    75
    Par défaut
    oui c'est bien cela. ta méthode "Select();" retourne bien une liste, exactement ce qu'il faut pour un datasource.

  15. #15
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Citation Envoyé par ApprentiProgrammeur Voir le message
    Merci pour vos conseils j'en tiendrais compte. Par contre pour afficher dans le dataGrigView je suis complètement perdu il faut pas faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    dataGridViewDB.DataSource = db.Select();
    Je comprends pas l'utilisation des DataGridView c'est la première fois que je les utilises.

    Merci de votre aide.

    Cordialement,
    N'oublie pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    dataGridViewDB.DataBind();

  16. #16
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci pour votre aide tout fonctionne.

    Cordialement,

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/11/2012, 17h47
  2. récupérer la partie commune d'une liste de String
    Par Kanter dans le forum Delphi
    Réponses: 11
    Dernier message: 18/04/2007, 12h46
  3. [VB]Récupérer une liste de fichiers
    Par yaya54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/02/2006, 16h03
  4. Réponses: 4
    Dernier message: 24/11/2005, 09h11
  5. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39

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