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

cpadmin 43 Messages postés lundi 12 juin 2006Date d'inscription 31 octobre 2006 Dernière intervention - 18 août 2006 à 13:19 - Dernière réponse : cpadmin 43 Messages postés lundi 12 juin 2006Date d'inscription 31 octobre 2006 Dernière intervention
- 18 août 2006 à 15:08
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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 août 2006 à 14:36
3
Merci
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

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
cpadmin 43 Messages postés lundi 12 juin 2006Date d'inscription 31 octobre 2006 Dernière intervention - 18 août 2006 à 15:08
3
Merci
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

Merci cpadmin 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cpadmin
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 août 2006 à 13:34
0
Merci
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
Commenter la réponse de cs_Bidou
cpadmin 43 Messages postés lundi 12 juin 2006Date d'inscription 31 octobre 2006 Dernière intervention - 18 août 2006 à 13:39
0
Merci
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?
Commenter la réponse de cpadmin
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 août 2006 à 13:45
0
Merci
Voui...
Un petit foreach rows in dataTable.Rows devrait faire l'affaire...

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
cpadmin 43 Messages postés lundi 12 juin 2006Date d'inscription 31 octobre 2006 Dernière intervention - 18 août 2006 à 14:14
0
Merci
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?
Commenter la réponse de cpadmin
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 18 août 2006 à 14:19
0
Merci
Le nombre de table tu veux dire?
Si oui, je dirais de tête : myDataSet.Tables.Count;

<hr size="2" />VC# forever
Commenter la réponse de cs_Bidou
cpadmin 43 Messages postés lundi 12 juin 2006Date d'inscription 31 octobre 2006 Dernière intervention - 18 août 2006 à 14:27
0
Merci
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...
Commenter la réponse de cpadmin

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.