使用Kentico CMS框架(版本7)如何嵌套多个CMS中继器?
我尝试过以下绑定父级的内容,但是如何让孩子们绑定?
<cms:CMSRepeater ID="repProducts" runat="server" ClassNames="cms.product" OrderBy="NodeLevel,NodeOrder" SelectOnlyPublished="true" MaxRelativeLevel="1">
<ItemTemplate>
<%# Eval("DocumentName")%>
<ul>
<li>
<cms:CMSRepeater ID="repProductsNested" runat="server" ClassNames="cms.product" OrderBy="NodeLevel,NodeOrder" SelectOnlyPublished="true" MaxRelativeLevel="1" Path="./%">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><%# Eval("DocumentName")%>
</ItemTemplate>
</cms:CMSRepeater>
<FooterTemplate>
</ul>
</FooterTemplate>
</li>
</ul>
</ItemTemplate>
</cms:CMSRepeater>
答案 0 :(得分:2)
我认为您在第一个转发器上缺少两个重要属性 DelayedLoading =“true”和 NestedControlsID =“repProductsNested”因此您的代码应如下所示:
<cms:CMSRepeater ID="repProducts" runat="server" ClassNames="cms.product" OrderBy="NodeLevel,NodeOrder" SelectOnlyPublished="true" MaxRelativeLevel="1" NestedControlsID="repProductsNested" DelayedLoading="true">
<ItemTemplate>
<%# Eval("DocumentName")%>
<ul>
<li>
<cms:CMSRepeater ID="repProductsNested" runat="server" ClassNames="cms.product" OrderBy="NodeLevel,NodeOrder" SelectOnlyPublished="true" MaxRelativeLevel="1" Path="./%">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><%# Eval("DocumentName")%>
</ItemTemplate>
</cms:CMSRepeater>
<FooterTemplate>
</ul>
</FooterTemplate>
</li>
</ul>
</ItemTemplate>
</cms:CMSRepeater>
答案 1 :(得分:0)
作为一个侧面点,我强烈建议不要使用嵌套转发器,除非你真的需要,或者你的数据集相当小。我们有一个大型下拉菜单,跨越我们的一个网站上的三个级别,以这种方式工作。该网站遇到了性能问题,在调查原因之后,菜单被发现是罪魁祸首,因为它有许多数据绑定。将其更改为使用分层查看器修复此问题,因为它返回单个数据集,可以使用分层转换进行操作。
我认为你应该在嵌套转发器出现时考虑分层转换。