Como adicionar uma classe a um link se o item da lista pai tiver filhos?
Pergunta
Estou construindo o menu Bootstrap no Kentico 6 usando a webpart "Visualizador universal" e transformações hierárquicas.Até agora eu terminei a estrutura, mas não consigo descobrir como adicionar a classe "menu suspenso" a um link quando seu pai <li>
tem filhos.
Este é o código que estou gerando agora:
<ul class="nav navbar-nav">
<li>
<a href="#">Some link</a>
<ul>...</ul>
</li>
</ul>
E estou tentando conseguir isso:
<ul class="nav navbar-nav">
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Some link</a>
<ul>...</ul>
</li>
</ul>
Classe e dados devem ser adicionados somente se o pai <li>
tem <ul>
embutido dentro.
Devo usar a transformação macro ou existe uma maneira de conseguir isso com a transformação ascx?
Solução
Se sempre houver um menu suspenso no caso de alguns nós filhos, você poderá usar NodeChildNodesCount
valor.
<a href="#" <%# ((int)Eval("NodeChildNodesCount") > 0) ? "class=\"dropdown-toggle\" data-toggle=\"dropdown\"" : "" %>>Some link</a>
Se houver algumas condições adicionais, como tipo de documento, será necessário recuperar o número de nós filhos para essas condições específicas.Você pode conseguir isso através da API do documento, em uma classe auxiliar ou diretamente na transformação ASCX.Procure a classe TreeProvider.Observe que esta pode ser uma operação com uso intensivo de desempenho.Eu também consideraria adicionar essas classes suspensas no lado do cliente por javascript.