0 votes

Construire un menu piloté par une base de données avec ASP.NET, JQuery et Suckerfish

J'essaie de créer un menu à partir d'un tableau en utilisant le Suckerfish css menu et Jquery. J'utilise ceci comme référence : Menu Suckerfish avec ASP.NET et JQuery et je l'ai fait fonctionner avec des liens fournis manuellement (comme dans l'article).

Là où je rencontre des difficultés, c'est dans l'écriture de la fonction récursive qui récupère les éléments de menu dans la base de données et crée les nouveaux éléments de menu dans la hiérarchie appropriée. La table de ma base de données ressemble à ceci :

Menu de table


MenuID ParentID Lien Texte

L'idée est que si un élément est un élément de niveau parent, le MenuID et le ParentID sont les mêmes, si c'est un enfant, il aura le MenuID de son parent dans le champ ParentID. J'ai besoin de créer une fonction qui peut aller chercher tous les enfants des parents (qui peuvent être à plusieurs niveaux) et remplacer les entrées manuelles comme celle-ci :

        Dim Foo As New MenuItem("#", "Foo", Me)
        Items.Add(Foo)
        Foo.Items.Add(New MenuItem("#", "1", Me))
        Foo.Items.Add(New MenuItem("#", "2", Me))
        Foo.Items.Add(New MenuItem("#", "3", Me))
        Foo.Items.Add(New MenuItem("#", "4", Me))

Je suis prêt à modifier la structure des tables de la base de données si nécessaire et à faire n'importe quoi d'autre pour que cela fonctionne.

Merci de votre contribution, elle est très appréciée.

2voto

RedFilter Points 84190

Cette méthode de représentation des données hiérarchiques est facile à comprendre pour les humains, mais difficile à extraire des données, car elle nécessite une récursion pour extraire la hiérarchie complète. Certaines versions de SQL ont des commandes qui font cela pour vous, mais c'est ce qui se passe dans les coulisses.

Je vous suggère de lire Plus d'arbres et de hiérarchies en SQL et restructurez votre schéma à l'aide de la méthode du chemin matérialisé qu'il explique. Il est facile d'effectuer des requêtes et s'adapte très bien.

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