2 votes

Trouver un nœud d'arbre spécifique dans TreeView

J'ajoute des nœuds d'arbre à TreeView de manière programmatique en fonction des valeurs de la base de données.

J'ai besoin d'ajouter des nœuds enfants à ces nœuds avant. La seule façon de les localiser est par myReportsNode.ChildNodes[int index], mais cette information ne me sert à rien, car je dois les trouver par leur valeur, ou un identifiant unique.

FindNode n'est pas une bonne option, car je ne sais pas exactement où ils sont, et chercher chaque nœud en itérant à travers l'arbre est une perte de temps. J'ai pensé à utiliser un dictionnaire pour les nœuds.

Des idées ?

0voto

Fakhar uz Zaman Points 181

Utilisez la stratégie d'utiliser trois quatre colonnes dans votre table de base de données.

1) nodeId
2) nodeText
3) nodeValue
4) parentId

Lorsqu'un nœud est cliqué, envoyez une demande via ajax pour vérifier si cet identifiant a un enfant, s'il en a, apportez ses enfants et ajoutez-les en dessous. Sinon, aucun enfant trouvé, pas besoin d'ajouter.

0voto

Jonathan Henson Points 4602

Vous devez utiliser une traversée d'arbre. S'il y a un certain type d'ordre, vous pourriez vous assurer qu'ils sont chargés dans l'arbre reflétant cet ordre, et vous pouvez utiliser une recherche en profondeur avec une complexité logarithmique (tout aussi efficace qu'un Dictionnaire basé sur l'arbre). Un dictionnaire de nœuds gaspillerait de la mémoire, puisque vous avez déjà une structure d'arbre que vous pouvez utiliser - c'est-à-dire s'il y a un certain type d'ordre.

Si vous pouviez nous donner une idée de la manière dont les données sont dans l'arbre, je pourrais aider encore plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X