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 :

C# Affichage SQL avec while


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut C# Affichage SQL avec while
    Bonjour à tous, j'arrive ainsi à mon deuxième problème, cette fois ci en utilisant une boucle while

    Je m'explique, dans ce projet, je veux afficher les "titre" de ma table dans un treeView
    J'y arrive c'est assez simple (enfin, si c'est bien comme ça qu'il faut s'y prendre )

    J'utilise while pour afficher un par un les lignes de ma table, tout en créant une nouvelle "Node" à chaque fois (je ne sais pas si ça se dit comme ça)
    Voici le morceau de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while (MyReader.Read())
                    {
     
                        TreeNode ChildNode4 = new TreeNode();
                        ChildNode4.Text = (String.Format("{0}", MyReader[1]));          // là j'affiche le "titre"         
                        ChildNode4.ForeColor = Color.Black;
                        ChildNode4.BackColor = Color.White;
                        ChildNode4.ImageIndex = 1;
                        ChildNode4.SelectedImageIndex = 1;
                        ChildNode1.Nodes.Add(ChildNode4); // là je créé une nouvelle ligne
     
     
                    }
    vu que j'ai plusieurs ligne dans ma table, ça en affiche donc plusieurs, voici un screen:


    Nom : 68d06f0194.PNG
Affichages : 166
Taille : 28,5 Ko


    Donc là tout est ok pour l'instant, maintenant je cherche à afficher une description (enfin là je n'ai pas encore de colonne description, donc on va se contenter de re-afficher le titre " (String.Format("{0}", MyReader[1]));"
    J'aimerai l'afficher dans la texbox que j'ai intégré dans le tabcontrol

    Je m'explique plus précisément, chaque "objet" dans ma bdd, (là ce sont des titres mais c'est pareil,) vont avoir une description, j'aimerai que quand on clique sur (pour cet exemple ça sera "Trajet tofu") cela affiche donc la description du "Trajet tofu" de ma table

    Vous suivez ?

    Dans ma table je n'ai pas encore la colonne "Description" c'est pour ça que comme dit plus haut on va re afficher le titre, donc quand je vais cliquer sur "Trajet tofu" ça va afficher le titre (Trajet tofu) dans mon tabcontrol en bas, et si je clique sur "ruturu", ça va afficher le titre (ruturu) et ainsi de suite


    Avec la boucle while, je n'arrive pas à reprendre se qu'il y a dedans, c'est à dire que si je marque après la boucle par exemple:
    MessageBox.Show(ChildNode4.Text);
    Et bien il me dit qu'il n'existe pas dans le contexte actuel (vue qu'il est dans la boucle while) donc en réalité, je ne peux rien reprendre, conclusion, je n'arrive pas à afficher les titres dans mon tabcontrol ...



    Si vous ne comprenez pas à un moment, faites moi le savoir !



    Je vous met une bonne partie du code pour y voir plus claire
    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
     string MyConnection2 = "datasource=localhost;Database=test;username=root;password=";
     
            TreeNode ParentNode = new TreeNode();
            TreeNode ChildNode1 = new TreeNode();
            TreeNode ChildNode2 = new TreeNode();
            TreeNode ChildNode3 = new TreeNode();
     
            TreeNode NextChildNode1 = new TreeNode();
            TreeNode NextChildNode2 = new TreeNode();
     
     
            private void Form1_Load(object sender, EventArgs e)
            {
     
     
     
                MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
                MyConn2.Open();
     
                {
     
     
     
                    ParentNode.Text = "Accueil";
                    ParentNode.ForeColor = Color.Black;
                    ParentNode.BackColor = Color.White;
                    ParentNode.ImageIndex = 0;
                    ParentNode.SelectedImageIndex = 0;
                    treeView1.Nodes.Add(ParentNode);           
     
                    MySqlCommand affichageTrajets = new MySqlCommand("SELECT * FROM `trajets_combats_astrub` ;", MyConn2);
                    MySqlDataReader MyReader = affichageTrajets.ExecuteReader();
     
                    ChildNode1.Text = "Astrub";
                    ChildNode1.ForeColor = Color.Black;
                    ChildNode1.BackColor = Color.White;
                    ChildNode1.ImageIndex = 0;
                    ChildNode1.SelectedImageIndex = 0;
                    ParentNode.Nodes.Add(ChildNode1);         
     
     
                    while (MyReader.Read())
                    {
     
                        TreeNode ChildNode4 = new TreeNode();
                        ChildNode4.Text = (String.Format("{0}", MyReader[1]));                   
                        ChildNode4.ForeColor = Color.Black;
                        ChildNode4.BackColor = Color.White;
                        ChildNode4.ImageIndex = 1;
                        ChildNode4.SelectedImageIndex = 1;
                        ChildNode1.Nodes.Add(ChildNode4);
     
     
                    }
     
     
     
     
     
                    ChildNode2.Text = "Child 2";
                    ChildNode2.ForeColor = Color.Black;
                    ChildNode2.BackColor = Color.White;
                    ChildNode2.ImageIndex = 0;
                    ChildNode2.SelectedImageIndex = 0;
                    ParentNode.Nodes.Add(ChildNode2);         
     
     
     
     
                }
     
                MyConn2.Close();
     
     
     
            }

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Si tu affiche ton message après la boucle while, c'est normal que tu ai cette erreur.

    Tu crée ton objet dans la boucle while, une fois sortie, ton Node4 n'existe plus.

    Mais je n'ai pas bien compris ce que tu veux faire.

    Tu peux constituer une string concaténé de toutes les descriptions :

    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
    string description = "";
     
     while (MyReader.Read())
                    {
     
                        TreeNode ChildNode4 = new TreeNode();
                        ChildNode4.Text = (String.Format("{0}", MyReader[1]));                   
                        ChildNode4.ForeColor = Color.Black;
                        ChildNode4.BackColor = Color.White;
                        ChildNode4.ImageIndex = 1;
                        ChildNode4.SelectedImageIndex = 1;
                        ChildNode1.Nodes.Add(ChildNode4);
                        description += ChildNode4.Text +";"
     
                    }
    Ca marche aussi pour récupérer la valeur directement dans une variable.

    Sinon tu peux créer ton ChildNode4 avant la boucle.

    Comme ça tu y auras accès.
    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
     
    TreeNode ChildNode4 = new TreeNode();
     
     
     while (MyReader.Read())
                    {
     
                        ChildNode4 = new TreeNode();
                        ChildNode4.Text = (String.Format("{0}", MyReader[1]));                   
                        ChildNode4.ForeColor = Color.Black;
                        ChildNode4.BackColor = Color.White;
                        ChildNode4.ImageIndex = 1;
                        ChildNode4.SelectedImageIndex = 1;
                        ChildNode1.Nodes.Add(ChildNode4);
     
                    }
    Mais je ne suis pas certain de ce que tu veux, donc ...

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci de t'être penché sur mon sujet
    Je suis sur mon téléphone, j'essayerai donc dans l'après-midi quand j'aurai mon ordinateur
    La première solution je ne sais pas ce que je pourrais faire avec, enfin je verrai bien, la deuxième est une solution que j'ai déjà essayé, mais si je fais ça il y a une erreur, normal vu que ça recrée Childnode4 sans avoir de New, enfin, si vous comprenez (j'ai un mal fou à m'expliquer....)

    En appuyant sur "trajet tofu" j'aimerais que ça actualise mon tableau Control (description) qu'il y a sur le screen, et que ça marque le titre dedans donc là dans l'exemple "trajet tofu"
    En faite ça doit reprend une colonne de ma table

    Bon voilà, la première solution ne fonctionne pas non plus, j'arrive à un résultat que j'ai déjà eu en faisant autrement

    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
    string description = "";
                    while (MyReader.Read())
                    {
     
                        TreeNode ChildNode4 = new TreeNode();
                        ChildNode4.Text = (String.Format("{0}", MyReader[1]));                   
                        ChildNode4.ForeColor = Color.Black;
                        ChildNode4.BackColor = Color.White;
                        ChildNode4.ImageIndex = 1;
                        ChildNode4.SelectedImageIndex = 1;
                        ChildNode1.Nodes.Add(ChildNode4);
                        description += MyReader[1] + ";"; // MyReader reprend la deuxième colonne (titre)
     
                    }
     
                    MessageBox.Show(description);
    Quand je démarre, il m'affiche directement tous les résultats en Messagebox , les titreq(trajet tofu;bouftou;etc)
    Sauf que j'aimerai c'est que ça affiche trajet tofu, seulement si on clique sur trajet tofu, et pour les autres pareils ^^

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut
    Bonjour,

    Il faut regarder du coté des events proposé pour le treeview..

    http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx

    Tu as celui par exemple

    http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx

    L'idée sera donc quand tu clicks sur un node, de lever l'événement et de récupérer la valeur qui t'intéresse pour l'afficher dans ta description.

    A+

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Un TreeNode possède une propriété Tag de type Object qui permet de stocker ce qu'on veut.
    L'idée sera donc de créer une classe comportant les informations que tu veux (Titre, Description etc.)
    Dans la boucle, tu crées une instance de cette classe pour chaque node et tu stockes l'instance sur le TreeNode.Tag.
    Ensuite, lorsque tu sélectionnes un Node, il suffit de récupérer les infos en transtypant sa propriété Tag dans ta classe.

  6. #6
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Bonjour,

    Un TreeNode possède une propriété Tag de type Object qui permet de stocker ce qu'on veut.
    L'idée sera donc de créer une classe comportant les informations que tu veux (Titre, Description etc.)
    Dans la boucle, tu crées une instance de cette classe pour chaque node et tu stockes l'instance sur le TreeNode.Tag.
    Ensuite, lorsque tu sélectionnes un Node, il suffit de récupérer les infos en transtypant sa propriété Tag dans ta classe.
    Merci !

Discussions similaires

  1. affichage sql avec Substr
    Par AMIL10g dans le forum Sql*Plus
    Réponses: 5
    Dernier message: 26/05/2011, 17h41
  2. [MySQL] Affichage du resultat d'une requete SQL avec PHP
    Par tabouet dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/09/2009, 14h03
  3. [SQL SERVER 2005] CASE avec WHILE
    Par catchouse dans le forum Développement
    Réponses: 1
    Dernier message: 06/05/2009, 11h35
  4. [SQL] affichage d'une requete SQL avec un echo (donnée unique)
    Par khamett dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/10/2007, 20h03
  5. [MySQL] problème affichage image avec sql
    Par igaurillac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/02/2007, 18h04

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