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 ?