Remplir un treeview depuis une base Access [Résolu]

Signaler
Messages postés
43
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
31 octobre 2006
-
Messages postés
43
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
31 octobre 2006
-
Bonjours à tous!

Voilà j'ai un problème:
J'ai un treeView dans une form1.
J'ai une base de donnée Access.
Lorsque form1 démarre, une requete va dans la table "compte" et sélectionne toute les entrées du champ "nom" pour afficher les données trouver dans le treeView1 sous la forme de Nodes.
Mon code ressemble à ça:

private void Form1_Load(object sender, System.EventArgs e)
{
            //requete de selection du champ nom dans la table compte
            string requete = "SELECT (nom) FROM compte";

            //création de la connection
            OdbcConnection connection = new OdbcConnection();

            //chaine de connection DSN
            string chaineDeConnection = "DSN=prog_sys_db";

            //affectation de la chaine de connection à la connection
            connection.ConnectionString = chaineDeConnection;
           
            //ouverture de la connection
            connection.Open();

            //création du DataSet
            DataSet data = new DataSet();

            //création du OdbcDataAdapter
            OdbcDataAdapter adapter = new OdbcDataAdapter(requete, connection);
           
            //remplissage du DataSet avec les résultats de la requête
            adapter.Fill(data, "compte");

            //stockage des données dans une dataTable
            DataTable treeView1 = data.Tables["compte"];
           
            //affectation des données de datagrid à la datatable
            this.treeView1.Nodes = treeView1;

            // Fermeture de la connexion
            connection.Close();
}

Le problème est que quand je compile, il me trouve deux erreurs:
-Impossible de convertir implicitement le type 'System.Data.DataTable' en 'System.Windows.Forms.TreeNodeCollection'

-La propriété ou l'indexeur 'System.Windows.Forms.TreeView.Nodes' ne peut pas être assigné -- il est en lecture seule
Apparement on ne peut pas affecter les données au treeView...
J'ai trouvé quelques sujet sur le forum qui concerne justement ce problème, mais je n'ai pas réussi utilisé les infos pour mon projet.
Si quelqu'un pouvait me donner un coup de main...
Je vous en remercie d'avance!

cpadmin
A voir également:

8 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Si tu veux récupérer toutes les rows de toutes les tables :

foreach (
DataTable dt
in myDataSet)
{
  
foreach(
DataRow dr
in dt.Rows)
   {
      //
   }
}

<hr size="2" />VC# forever
Messages postés
43
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
31 octobre 2006

Voilà j'ai trouver!

J'ai fais :

foreach

(DataRow row
in treeView1.Rows)
{
         TreeNode NewNode =
new TreeNode(row["nom"].ToString());
         
this.treeView1.Nodes.Add(NewNode);
}

Je te remerci pour l'aide que tu m'a apporter!

A la proch!

cpadmin
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Salut,
Ben non le treeview n'a pas de property DataSource (normal, comment ferait-il pour représenter les noeuds?). Une fois que les données sont dans ton DataSet (ou DataTable) tu dois ajouter "manuellement" les données dans ton treeview.

<hr size="2" />VC# forever
Messages postés
43
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
31 octobre 2006

Je les insèrent avec une boucle?
Faut définir le nombre de donnée trouvé avec la requete et ensuite je prend la première donnée trouver en je l'a "add", puis la deuxième, etc jusqu'a ce que j'arrive au nombre de donnée trouver?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Voui...
Un petit foreach rows in dataTable.Rows devrait faire l'affaire...

<hr size="2" />VC# forever
Messages postés
43
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
31 octobre 2006

ouais le foreach ca joue! J'ai 3 entrée dans mon champ nom, et au démarrage de mon programme il y a bien 3 nodes dans le treeView...
mais mon point faible, c'est la boucle. :-(
comment on va pour connaitre le nombre d'entrée stocker dans le dataSet?
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Le nombre de table tu veux dire?
Si oui, je dirais de tête : myDataSet.Tables.Count;

<hr size="2" />VC# forever
Messages postés
43
Date d'inscription
lundi 12 juin 2006
Statut
Membre
Dernière intervention
31 octobre 2006

oui!
alors si je te suis bien, mon foreach donne :

foreach

(DataRow row
in treeView1.Rows
{

         for (i=0; i<=data.Tables.Count; i++)
         {
                  TreeNode node =
new TreeNode(row[i]);
                  
this.treeView1.Nodes.Add(node);
         }
}

Je veux pas te demander de me programmer le truc, mais j'arrive mieux a comprendre si je vois...