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

ASP.NET Discussion :

Treeview et Treenode problems


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut Treeview et Treenode problems
    salut tout le monde ,
    je travaille en c# avec treeview sa commence a marcher peu a peu , mais j ai rencontré un problem ...
    voila mon code :
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (TreeView1.Nodes.Count == 0)
            {
                TreeNode n = new TreeNode();
                n.PopulateOnDemand = true;
                n.Expanded = false;
                OracleConnection oracon1 = new OracleConnection();
                oracon1.ConnectionString =*************;
                oracon1.Open();
                string req = "select nom,prenom ,matricule from employe where id_qualification = 1";
                OracleCommand oracmd = new OracleCommand(req, oracon1);
                OracleDataReader rs = oracmd.ExecuteReader();
                rs.Read();
                n.Text = rs["nom"].ToString().TrimEnd() + " " + rs["prenom"].ToString().TrimEnd() + " " + rs["matricule"].ToString().TrimEnd();
                n.Value = rs["matricule"].ToString().TrimEnd();
                n.ToggleExpandState();
                 n.SelectAction = TreeNodeSelectAction.SelectExpand;
                TreeView1.Nodes.Add(n);
            }
        }
        protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            TreeNode SNode =  TreeView1.SelectedNode;
            TreeView1.ShowExpandCollapse = true;
            OracleConnection oracon2 = new OracleConnection();
            oracon2.ConnectionString = "==============";
            string req1 = "select id , nom from equipe where matriculechef =" + SNode.Value;
            OracleCommand oracmd2 = new OracleCommand(req1, oracon2);
            OracleDataReader rs1 = oracmd2.ExecuteReader();
     
            while (rs1.Read())
            {
                //WebMsgBox.Show("id equipe = "+rs1["id"].ToString ());
                string req2 = "select nom , prenom , matricule from employe where id_equipe = " + rs1["id"].ToString ().TrimEnd ();
                OracleCommand oracmd3 = new OracleCommand(req2, oracon2);
                OracleDataReader rs2 = oracmd3.ExecuteReader();
     
                while (rs2.Read())
                {
                    if (SNode.Value != rs2["matricule"].ToString().TrimEnd())
                    {                   
                        WebMsgBox.Show("la valeur de Snode =" + SNode.Value + " et la valeur de RS2=" + rs2["matricule"].ToString().TrimEnd());
                        //WebMsgBox.Show(rs2["nom"].ToString().TrimEnd() + " " + rs2["PRENOM"].ToString().TrimEnd());
                        TreeNode node = new TreeNode();
                        node.Text = rs2["nom"].ToString().TrimEnd() + " " + rs2["prenom"].ToString().TrimEnd() +" "+ rs2["matricule"].ToString().TrimEnd()+"/"+rs1["nom"];
                        node.Value = rs2["matricule"].ToString().TrimEnd();
                        // avoir si on est chef d'equipe ??? avec req ...
                        node.PopulateOnDemand = true;
                        node.SelectAction = TreeNodeSelectAction.SelectExpand;
                        while (SNode.ChildNodes.GetEnumerator().MoveNext())
                            {
                               TreeNode temp =  SNode.ChildNodes.GetEnumerator().Current;
                             if (temp.Value.ToString().TrimEnd ()  == rs2["matricule"].ToString().TrimEnd() )
                              {
                                   WebMsgBox.Show("on a deja trouvé cet element ");
                                   SNode.ChildNodes.Add(node);
                                 }
                            }
                    }
                }
            }        
        }
     
        protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
        {       
            OracleConnection oracon2 = new OracleConnection();
            oracon2.ConnectionString = "===========";
            oracon2.Open();
            string req1 = "select id , nom from equipe where matriculechef =" + e.Node.Value;
            OracleCommand oracmd2 = new OracleCommand(req1, oracon2);
            OracleDataReader rs1 = oracmd2.ExecuteReader();
     
            while (rs1.Read())
            {
                string req2 = "select nom ,prenom, matricule from employe where id_equipe = " + rs1["id"];
                OracleCommand oracmd3 = new OracleCommand(req2, oracon2);
                OracleDataReader rs2 = oracmd3.ExecuteReader();
     
                while (rs2.Read())
                {
                    WebMsgBox .Show (rs2["nom"].ToString().TrimEnd() + " " + rs2["prenom"].ToString().TrimEnd());
                    TreeNode node = new TreeNode();
                    node.Text = rs2["nom"].ToString().TrimEnd() + " " + rs2["prenom"].ToString().TrimEnd();
                    node.Value = rs2["matricule"].ToString().TrimEnd ();
                    // a voir si on est chef d'equipe ??? avec req ...
                    node.PopulateOnDemand = true ;
                    node.SelectAction = TreeNodeSelectAction.SelectExpand;
                    e.Node.ChildNodes.Add(node);
                }        
            }
          }
    }
    le problem c est que j'ai suivi un tuto en anglais je sais pas a quoi sert le TreeView1_TreeNodePopulate apart sa j ai implémenté le corp de TreeView1_SelectedNodeChanged donc le problem c 'est a chaque changement du noeud j'ai les meme requettes qui se fasse de nouveau donc le contenu du tree s'ajoute avec des noeud redandante j'ai tout éssayé pour empécher sa mais sans résultat ... existe t'il une facon pour faire le teste et voir si les childs nodes existe deja ? avant de les rajouter ?


  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut
    Bonjour tout le monde , une autre question plus simple :

    comment voir la valeur de toute les noueds d'un treeview ? sa veut dire comment parcourir le noueds ???

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    pour tester si un TreeNode a déjà des noeuds enfants, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (e.Node.ChildNodes.Count > 0)
    {
       ...
    }
    Pour parcourir tous les noeuds d'un TreeView, il faut le faire de façon récursive, en bouclant sur la collection ChildNodes de chaque noeud

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut
    merci bien pour votre aide , mais sa répond pas a ma question , ce que je veux c est de parcourir tout les valeur (node.value) des noueds de mon treeview afin de pouvoir savoir si le valeur que j'ai retourné de ma requete existe déja dans la treeview donc pas l'inserer ou n'existe pas donc l'inserer ...

    merci bien ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 87
    Par défaut tutorial ?
    salut tout le monde existe t'il un bon tutorial a suivre pour faire des treeview en C# ??? merci bien !

Discussions similaires

  1. [c#] Probleme d'événement sur TreeView
    Par gilles641 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2006, 16h56
  2. Probleme avec TreeView
    Par chleuh dans le forum Composants VCL
    Réponses: 3
    Dernier message: 13/08/2005, 20h41
  3. [C# Treeview] sauvegarde treenode problème Expand()
    Par joujoukinder dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/07/2005, 13h10
  4. TreeView Probleme
    Par Soulama dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/07/2005, 11h36
  5. probleme Data Treeview
    Par loleske dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/02/2005, 09h23

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