2009-07-14 10 views
1

Je dois construire un arbre en utilisant les données suivantes qui provient d'un DB:Construire une dynamique TreeView

ID   Name  ManagerID 
180002  john  180001 
180003  Michel 180002 
180005  smith 180003 

john 
|_Michel 
    |_ smith 

Plus précisément, je dois faire un contrôle ASP.NET TreeView. La profondeur de TreeView n'est pas fixe.

Répondre

0

Vous n'avez pas spécifié si vous utilisiez C# ou VB, mais l'approche est la même dans les deux cas.

Vous commencez par créer un TreeNode pour chaque individu de niveau supérieur (ceux qui n'ont pas d'ID de gestionnaire ou avec un code ManagerID spécial qui indique le niveau supérieur).

Puis, récursivement, pour chaque individu qui rapporte au gestionnaire actuel, créez un nouveau TreeNode et ajoutez-le en tant qu'enfant pour le gestionnaire actuel. Trouvez tous ceux qui relèvent de lui et appliquez-leur cette fonction. Arrêtez quand personne ne se rapporte à la personne actuelle.

Donc, en supposant que vous avez un DataSet avec les détails de cette table, vous feriez quelque chose comme ceci (exemple VB):

Sub PopulateTreeNode(
    CurrentNode As TreeNode, 
    CurrentManagerID As String, 
    Table As DataTable 
) As TreeNode 
    For Each Row As DataRow In _ 
    DataTable.Select("ManagerID = '" & CurrentManagerID & "'") 
    Dim CurrentUser As String = Row("ID").ToString() 
    Dim Node As New TreeNode(CurrentUser) 
    PopulateTreeNode(Node, CurrentUser, Table) 
    CurrentNode.Nodes.Add(Node) 
    Next 
End Sub 
+0

Merci, il fonctionne est là pour éviter la publication de sorte que le noeud soit sélectionné, mais il ne publiera pas sur le serveur – muthu

+0

Vous pouvez envelopper dans un UpdatePanel, ou vous pouvez définir la propriété AutoPostBack de l'arbre et son nœuds à faux. – Welbog