Kentico Repeater HTML Properties showing with selected transformation

落爺英雄遲暮 提交于 2019-12-11 01:33:38

问题


My HTML envelope wraps my repeater transformation in a TABLE tag. Without using JS, how do i ensure this HTML isn't visible for the selected transformation. I have no objections to have a template for the selected transformation data, just unsure how to do that.

Here is my Transformation:

<tr>
   <td><%# FormatDate(Eval("Date")) %></td>
   <td><a href="<%# GetDocumentUrl() %>"><%# Eval("Subject") %></a></td>
   <td><%# Eval("From") %></td>
</tr>

And this is my selected transformation:

<section id="memoDetail">
  <h1>Memorandum</h1>
  <ul id="memoHeader">
   <li><span class="headerLabel">To:</span> <%# Eval("To") %></li>
   <li><span class="headerLabel">From:</span> <%# Eval("From") %></li>
   <li><span class="headerLabel">Subject:</span> <%# Eval("Subject") %></li>
   <li><span class="headerLabel">Date:</span> <%# Eval("Date") %></li>
  </ul>
  <div id="memoDetails"><%# Eval("Details") %></div>
</section>

回答1:


Consider moving your table tags from the html envelope and conditionally rendering them inside your transformation like this:

// If this is the first item in the repeater, open the table tag
<%# DataItemIndex == 0 ? "<table>" : "" %>

  // your trasformation code

// if this is the last item in the repeater, close the table tag
<%# DataItemIndex + 1 == DataItemCount ? "</table>" : "" %>

This will prevent them from appearing in your selected item transformation since it's a completely different transformation.

You may have to place the DataItemIndex and DataItemCount properties within an Eval() method. It's been awhile since I've worked with ASCX transformations.

Edit: Looks like you can now use the IsFirst() and IsLast() methods within ascx transformations:

<%# IsFirst() ? "<table>" : "" %>

// transformation code

<%# IsLast() ? "</table>" : "" %>



回答2:


If the list and detail page type are different. Another solution is to use a macro in html envelope property of the repeater. For example, if the page type of the list is CMS.MenuItem, the property should look like this:

{% ClassName == "CMS.MenuItem" ? "<table>" : "" #%}


来源:https://stackoverflow.com/questions/35435529/kentico-repeater-html-properties-showing-with-selected-transformation

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!