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
|
'à partir du PageLoad il faut remplir le ou les premiers noueds du TreeView avec ce code qui peut trés bien être dans une Sub déportée
Dim dt As DataTable = dm.ExecuterRequeteSimple("SELECT Identifiant, Libelle FROM lobdjetBDD WHERE Parent is null ORDER BY Parent")
'le ORDER c'est à vous de voir, ça peut être un autre champ qui serait ajouter en bout de ligne.
'la clause WHERE sert à déterminer le ou les noeuds de plus haut niveau, j'ai mis du NULL, j'aurais pu mettre un autre identifiant, 0 par exemple.
'Le chargement dans une DataTable est ce que j'ai trouvé de plus simple car j'ai un FrameWork perso qui me renvoi une DataTable en deux lignes de code
For Each dr As DataRow In dt.Rows
Dim NewNode As New TreeNode(dr(1), dr(0))
'là, on emploi les index de champs, histoire que ce soit plus facile, donc l'ordre des champs....
NewNode.PopulateOnDemand = True
NewNode.Expanded = False
NewNode.SelectAction = TreeNodeSelectAction.None
'c'est trois lignes là sont là pour l'exemple, parce que mon besoin à l'origine est comme ça, mais c'est là qu'on bricole le noeud pour lui donner l'apprence et les fonctions que l'on souhaite. Un With est certainemnt sympa.
TV.Nodes.Add(NewNode)
Next
'ensuite on active le PopulateOnDemand du TreeView pour remplir à la suite à chaque fois qu'un noeud se présente.
Protected Sub TV_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles TV.TreeNodePopulate
Dim dtn As DataTable = dm.ExecuterRequeteSimple("SELECT Identifiant, Libelle FROM lobdjetBDD WHERE Parent = " & e.Node.Value & "ORDER BY Parent")
'Donc, là on récupère le niveau où l'on est pour remplir la suite d'où le e.Node.Value
For Each dr As DataRow In dtn.Rows
Dim NewNode As New TreeNode(dr(1), dr(0))
NewNode.PopulateOnDemand = True
NewNode.Expanded = False
NewNode.SelectAction = TreeNodeSelectAction.None
e.Node.ChildNodes.Add(NewNode)
Next
'Et on recommence le même travail que précédement, sauf que l'ajout final n'est pas le même, on ajoute au noeud et pas au TreeView direct.
End Sub |
Partager