Search code examples
twitter-bootstrap-3kenticobootstrap-accordion

Kentico's webpart control ID in value in a repeater and transformation


I'm building out a bootstrap based accordion. It's almost there, except i need to wrap each accordion with a tab with a unique ID. My thought was to use the repeaters control ID. So how i can access this from a transformation, and also the HTML envelope?

Here is the HTML envelope from the repeater

<div class="accordion" id="askUsAccordion">
  
  
</div>

Here is my transformation code

<div class="panel panel-default">
  <div class="panel-heading">
    <h4 class="panel-title">
      <a href="#accordionPanel<%# DataItemIndex + 1 %>" data-toggle="collapse" data-parent="#"><%# DataItemIndex + 1 %> <%# Eval("Heading") %></a>
    </h4>    
  </div>  
  <div id="accordionPanel<%# DataItemIndex + 1 %>" class="panel-collaspe collapse" role="tabpanel" aria-labeledby="panel<%# DataItemIndex + 1 %>">
    <div class="panel-body">
      <%# Eval("Panel") %>
    </div>
  </div> 
</div>  


Solution

  • Mark, not sure this is the best solution, but it should work for you. Add server side function into your transformation like this:

    <script runat="server">
      protected string GetID()
        {      
          Control parent = this;      
          while ( (!(parent is CMSWebParts_Viewers_Documents_cmsrepeater)) && 
                 (parent != null))
          {
            parent = parent.Parent;
          }      
          return (parent as CMSWebParts_Viewers_Documents_cmsrepeater).WebPartID;
        }
    </script>
    

    And call this method in your transformation like this:

    <%# GetID() %>