2010-08-26 24 views
0

Mes données proviennent d'une base de données. J'ai une table de données d'article avec quelques propriétés de base.ASP.net: Plus de 2 répéteurs imbriqués

Item 
{ 
    ID, 
    Name, 
    Description, 
    ... 
} 

Alors j'ai un plusieurs à plusieurs table de relation avec:

Parent 
{ 
    ParentID, 
    ChildID 
} 

J'itérer chaque article et afficher ses enfants; et les enfants de ses enfants, etc. Je suppose que cela serait mieux accompli avec des répéteurs imbriqués, mais je peux me tromper.

Comment puis-je obtenir plusieurs niveaux hiérarchiques en utilisant asp: rediffuseurs? J'ai seulement utilisé un répéteur imbriqué, je n'ai aucune idée de comment faire 3+.

Répondre

0

Personnellement, je le fais probablement en créant un contrôle personnalisé avec une propriété Item et une sorte de propriété Parents ou Children. Le contrôle affichera des détails sur Item, puis utilisera un répéteur pour afficher chaque élément dans Parents/Children, où pour chaque élément, le répéteur utilise récursivement le même contrôle pour rendre l'élément.

0

Je ferais ce que @Kragen a dit. Mais si vous pensez vraiment que la création de deux composants est trop importante, vous devez utiliser un répéteur et deux boucles foreach pour les données liées. L'utilisation de deux répéteurs l'un dans l'autre est trop compliquée pour ne pas mentionner 3 répéteurs :).

0

Une relation parent-enfant, qui est plusieurs-à-plusieurs? Cela n'a pas de sens, au moins les appeler un parent et un enfant n'a pas de sens. Si c'est vraiment plusieurs-à-plusieurs, c'est un réseau, si un enfant n'a qu'un seul parent, alors c'est une hiérarchie. Avec le premier, je ne suis pas sûr que les visualiser de cette façon est bon. Comment visualisez-vous un enfant avec plus d'un parent? Avec ce dernier, pourquoi ne pas utiliser un TreeView avec un modèle d'élément personnalisé? Il gère automatiquement tous les éléments de la hiérarchie. Le problème avec les répéteurs est que si vous ne les faites pas dynamiquement (en les créant dans le code), alors le niveau d'imbrication est fixe et vous ne pouvez pas aller autant que vous voulez. Les faire fonctionner dynamiquement fonctionnerait, mais apporterait des frais généraux.

Je ne sais pas exactement ce que vous essayez d'accomplir. Peut-être que fournir plus de détails sur le résultat final que vous devriez voir serait utile.