Bonjour
J'ai un probl�me avec un Treeview implant� dans une page web (4 niveaux avec la racine): impossible de g�rer les noeuds s�lectionn�s, d'autre part, il a un comportement que je ne comprends pas : il accepte la s�lection des noeuds de niveaux 3, mais sur les noeuds niveau 1 et 2, il s�lectionne uniquement le premier noeud du niveau (?!!).
Mon Treeview est implant� avec ce code :
Il est initialis� sur l'�v�nement Page_Load de la page (j'ai lu dans un post que c'�tait la meilleure solution) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11 <asp:TreeView ID="activ" runat="server" Style="z-index: 100; left: 0px; position: absolute; top: -6px" ExpandDepth="1" OnSelectedNodeChanged="activ_SelectedNodeChanged" ImageSet="Arrows" MaxDataBindDepth="2"> <LevelStyles> <asp:TreeNodeStyle Font-Size="Large" Font-Underline="False" /> </LevelStyles> <SelectedNodeStyle Font-Bold="True" ForeColor="#5555DD" Font-Underline="True" HorizontalPadding="0px" VerticalPadding="0px" /> <ParentNodeStyle Font-Bold="False" /> <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" /> <NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" /> </asp:TreeView>
Enfin, j'ai cod� la proc�dure SelectedNodeChanged comme suit (juste le remplissage de zones de texte avec les donn�es du noeud s�lectionn� :
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 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { TreeNode noeudRacine = new TreeNode("Activités", "0"); activ.Nodes.Add(noeudRacine); //noeudRacine.NavigateUrl = "javascript:void(0);"; OleDbConnection cnx = new OleDbConnection(); cnx.ConnectionString = ads_filiere.ConnectionString; OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cnx; cnx.Open(); cmd.CommandText = "select filiere from filiere"; OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { TreeNode noeudFiliere = new TreeNode(dr.GetString(dr.GetOrdinal("filiere")), "1"); noeudRacine.ChildNodes.Add(noeudFiliere); //message += noeudFiliere.NavigateUrl.ToString() + "<br>"; //noeudFiliere.NavigateUrl = "javascript:void(0);" OleDbConnection cnx2 = new OleDbConnection(); cnx2.ConnectionString = ads_filiere.ConnectionString; OleDbCommand cmd2 = new OleDbCommand(); cmd2.Connection = cnx2; cnx2.Open(); cmd2.CommandText = "select branche from branche where filiere='" + dr.GetString(dr.GetOrdinal("filiere")) + "'"; OleDbDataReader dr2 = cmd2.ExecuteReader(); while (dr2.Read()) { if (!dr2.IsDBNull(0) && dr2.GetString(0).Trim() != "") { TreeNode noeudBranche = new TreeNode(dr2.GetString(0), "2"); noeudFiliere.ChildNodes.Add(noeudBranche); //message += noeudBranche.NavigateUrl.ToString() + "<br>"; //noeudBranche.NavigateUrl = "javascript:void(0);"; OleDbConnection cnx3 = new OleDbConnection(); cnx3.ConnectionString = ads_filiere.ConnectionString; OleDbCommand cmd3 = new OleDbCommand(); cmd3.Connection = cnx3; cnx3.Open(); cmd3.CommandText = "select spécialité from spécialité where branche='" + dr2.GetString(0) + "'"; OleDbDataReader dr3 = cmd3.ExecuteReader(); while (dr3.Read()) { if (!dr3.IsDBNull(0) && dr3.GetString(0).Trim() != "") { TreeNode noeudSpécialité = new TreeNode(dr3.GetString(0), "3"); //noeudSpécialité.NavigateUrl = "javascript:void(0);"; noeudBranche.ChildNodes.Add(noeudSpécialité); } } dr3.Close(); cnx3.Close(); } } dr2.Close(); cnx2.Close(); } dr.Close(); cnx.Close(); } }
Question : Pourquoi le treeview ne fonctionne qu'avec les noeuds de niveau 3 ? et pas avec tous ? Je n'ai pas trouv� de propri�t� qui param�tre cel�, je n'ai pas trouv� de r�ponse dans le forum non plus, c'est pour �� que je demande si quelqu'un ne verrait pas une solution � mon probl�me ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 protected void activ_SelectedNodeChanged(object sender, EventArgs e) { Response.Write(activ.SelectedNode.Text); txtselectedvalue.Text = activ.SelectedNode.Text; txtselectedvalue2.Text = activ.SelectedNode.Text; txtpath.Text = activ.SelectedNode.ValuePath; txtniveau.Text = activ.SelectedNode.Depth.ToString(); }
Merci
Partager