Comment ajouter une classe à un lien si le parent de l'élément de liste a des enfants?
Question
Je suis en train de construire Bootstrap menu dans Kentico 6 à l'aide de "Universal viewer" webpart et les transformations hiérarchiques.Jusqu'à présent j'ai eu de la structure, mais je ne suis pas en mesure de comprendre comment ajouter "dropdown-menu" classe à un lien quand son parent <li>
a des enfants.
C'est le code, je suis de la génération de maintenant:
<ul class="nav navbar-nav">
<li>
<a href="#">Some link</a>
<ul>...</ul>
</li>
</ul>
Et je suis en train de réaliser ceci:
<ul class="nav navbar-nav">
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Some link</a>
<ul>...</ul>
</li>
</ul>
De classe et les données doivent être ajoutées uniquement si le parent <li>
a <ul>
incorporé à l'intérieur.
Dois-je utiliser la macro de transformation ou est-il un moyen de réaliser cela avec ascx transformation?
La solution
Si il y a toujours une liste déroulante dans le cas de certains nœuds enfants vous pouvez utiliser NodeChildNodesCount
de la valeur.
<a href="#" <%# ((int)Eval("NodeChildNodesCount") > 0) ? "class=\"dropdown-toggle\" data-toggle=\"dropdown\"" : "" %>>Some link</a>
Si il y a quelques conditions supplémentaires comme type de document, vous devez récupérer le nombre de nœuds enfants pour que des conditions spécifiques.Vous pouvez l'atteindre par le document de l'API, dans une classe d'assistance ou directement dans ASCX transformation.Recherchez TreeProvider classe.Notez que cela peut être la performance de fonctionnement intensif.Je voudrais également envisager d'ajouter que ces déroulant classes sur le côté client en javascript.